首页 > 其他 > 详细

P1678 烦恼的高考志愿

时间:2020-06-28 20:26:38      阅读:89      评论:0      收藏:0      [点我收藏+]

https://www.luogu.com.cn/problem/P1678

方法一:手写二分

 

方法二:STL

#include<bits/stdc++.h>
using namespace std;
int m, n, a[100005], b;
long long ans;
int min_ab(int x){								//求最小值为不满意度
	int lb=lower_bound(a,a+m,x)-a;				//求大于等于x的第一个数的下标 
	int t=lb-1==-1?0:(lb-1);					//求之前的下标,避免数组越界 
	if(a[lb]==x)return 0;						//如果相等返回0 
	else return min(abs(a[lb]-x), abs(a[t]-x));	//如果不相等返回相差小的那个值 
}
int main()
{
	cin>>m>>n;
	for(int i=0; i<m; i++){
		cin>>a[i];
	}
	sort(a, a+m);
	for(int i=0; i<n; i++){
		cin>>b;
		ans+=min_ab(b);
	}
	cout<<ans;
	return 0;
 } 

 

P1678 烦恼的高考志愿

原文:https://www.cnblogs.com/tflsnoi/p/13204429.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!