首页 > 其他分享 >P1678 烦恼的高考志愿(二分lower_bound)

P1678 烦恼的高考志愿(二分lower_bound)

时间:2024-12-31 19:18:58浏览次数:5  
标签:lower P1678 int bound long sc sd

题目链接:https://www.luogu.com.cn/problem/P1678

题意 :对每一个学生找一个和他成绩差值最小的学校,求差值之和

思路:贪心+二分查找

注意 :

  1. 当lower_bound在数组中找不到大于等于目标值时,会返回其尾迭代器/数组最后的一个元素下标+1 因此要特判
  2. 比较第一个大于等于目标值的元素,与其左边(即恰好小于目标值的元素)与目标值的差值(因此要特判数组越界情况
    不过我很好奇为什么数组越界(即当lower_bound返回下标为0)时程序不会报错反而给了一个0这个错误结果
    真是神奇啊!
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e5+6;
int sc[maxn];
int sd[maxn];
int n,m;
long long ans=0;
signed main()
{
	ios::sync_with_stdio(false),cin.tie(0);
	cin>>m>>n;
	for(int i=0;i<m;i++)cin>>sc[i];
	for(int i=0;i<n;i++)cin>>sd[i];
	sort(sc,sc+m);
	for(int i=0;i<n;i++)
	{
		int t=lower_bound(sc,sc+m,sd[i])-sc;
		if(t==m)
		{
			ans+=abs(sc[t-1]-sd[i]);
		}
		else
		{
			if(t-1>=0)
			{
				 ans+=min(abs(sc[t]-sd[i]),abs(sc[t-1]-sd[i]));
			}
			else ans+=abs(sc[t]-sd[i]);
		}
	}
	cout<<ans;
	return 0;
}


标签:lower,P1678,int,bound,long,sc,sd
From: https://www.cnblogs.com/benscode/p/18644686

相关文章

  • NLP论文速读(NeurIPS 2024)|树状结构两阶段推荐系统的泛化误差边界Generalization Err
    论文速读|GeneralizationErrorBoundsforTwo-stageRecommenderSystemswithTreeStructure论文信息:简介:   本文讨论的是两阶段推荐系统(Two-stageRecommenderSystems)在具有树结构的情况下的泛化误差界限。两阶段推荐系统在许多在线服务中扮演着重要角色,例......
  • 【ETCD】当客户端从follower节点发起写请求时候,ETCD集群是如何处理此次的写请求呢?
    当客户端从follower节点发起写请求时候,ETCD集群是如何处理此次的写请求呢?目录1.客户端发起请求2.Follower节点转发请求3.转发给Leader节点4.Leader节点处理请求4.1写入预写日志(WAL)4.2发送复制请求5.Follower节点持久化数据6.Leader确认复制完成**7.Leader节......
  • 微信小程序自定义组件boundingClientRect获取到的rect值为null
      解决办法: 在自定义组件内获取必须用SelectorQuery.in()Component({lifetimes:{ready(){constquery=wx.createSelectorQuery().in(this)constnum=Math.ceil(this.data.picList.length/LINE_LENGTH)query.select('.tab-content-i......
  • Mysql8.0修改配置参数lower_case_table_names
    现象今天在配置一个环境的数据库,所使用的系统要求该数据库lower_case_table_names=1(对数据库表明、列名大小写不敏感)我看了一下,在Windows上,默认值为1。在macOS上,默认值是2。在Linux上,不支持值2;服务器会将该值设置为0。那0是不符合我们需求的,于是我打开my.cnf进......
  • 《Boundary-induced and Scene-aggregated Network for Monocular Depth Prediction》
    Boundary-inducedandScene-aggregatedNetworkforMonocularDepthPrediction这篇论文主要是做有监督深度估计,这里重点看了一下他的创新点和损失函数创新点针对创新点,主要遇到的一个问题是深度估计边缘不清晰,边缘处深度估计不准确BUBF自底向上的边界融合模块每一层编码器......
  • Spring-线程池执行save语句报错“ No SecurityManager accessible to the calling cod
    报错信息:Cause:org.apache.shiro.UnavailableSecurityManagerException:NoSecurityManageraccessibletothecallingcode,eitherboundtotheorg.apache.shiro.util.ThreadContextorasavmstaticsingleton.Thisisaninvalidapplicationconfiguration.ator......
  • SpringBoot:Invalid bound statement (not found)的原因和解决方案
    检查你的resources文件下的配置com.csi.mapper错误写法:正确写法:检查你的文件是否是一层套一层,点击Explorer......
  • ORB-SLAM ---- Frame::ComputeImageBounds和Frame::AssignFeaturesToGrid()
    文章目录一、Frame::ComputeImageBounds()1.函数作用及讲解2.源码及标注二、Frame::AssignFeaturesToGrid()1.函数作用及讲解2.源码及标注3.调用的函数三、总结一、Frame::ComputeImageBounds()该函数的作用为计算函数边界,仅在第一帧或者标定参数变化后进行图......
  • 9.Branch-and-Bound 方法
    Branch-and-Bound方法Branch-and-Bound(分支限界)是一种用于解决优化问题的算法框架,尤其适用于组合优化问题,如整数规划、旅行商问题(TSP)、指派问题等。该方法通过系统地搜索解空间树来找到问题的最优解或近似解。基本概念Branch-and-Bound方法的核心在于分支(Branching)和......
  • 线段树与二分操作 vases and flowers ——hdu 4614
    操作1,的关键是找到第一只和最后一只空花瓶,完全可以利用二分法查找,找第一只花瓶可以在[X,N]内查找,第一个位置pos1,最后一只花瓶则在[POS1,N]中找,然后更新[POS1,POS2],全部置1即可代码:#include<iostream>usingnamespacestd;constintN=5e4+5;structnode{ intlazy; in......