题意:给出n个人(n是奇数),s钱;s为总的可以付工钱的钱;

每一个工人有一个付工钱的区间,只要在这个区间范围内,随便一个数都可以当作给这个工人付了钱;

老板要付给每个工人钱,并且付钱的中位数要尽可能大;

问:最大的中位数是多少;

思路:贪心+思维+二分;

我们以中位数为主体进行二分。那么就需要n/2+1个大于等于中位数的数;

这个时候我们先给钱排序,按第一个数从大到小排;

然后check部分,从1到n遍历,如果满足x在区间范围内,就取x这个数;

那么,为什么就要取这个数呢,因为我们迟早要凑到n/2+1个数,所以从大到小的排序,可以让我们在使用的钱

最少的情况下,取出这n/2+1个这样的数;  比如有这样两个区间“6 10” ”7 11“  按从大到小排序,我们假如中位数为8;

我们假如“6 10" 取中位数8 ”7 11“ 取左端点7 那么结果为15

如果”7 11“ 取中位数, 另一个取左端点,则结果为14;

所以代码如下

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+;
struct node
{
int l,r;
}a[maxn];
ll n;ll s;
bool cmp(node x,node y)
{
return x.l>y.l;
}
int check(ll x)
{
ll sum=;
ll num=n/+;
for(int i=;i<=n;i++){
//当num==0之后,所需要的大于等于n/2+1已经满足,所以都取
//左端点即可;
if(x>=a[i].l&&x<=a[i].r&&num>){
sum+=x;
num--;
}
else{
sum+=a[i].l;
if(a[i].l>=x) num--;
}
}
if(num>) return ;
else{
if(sum>s) return ;
else return ;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--){
scanf("%lld%lld",&n,&s);
for(int i=;i<=n;i++){
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a+,a++n,cmp);
ll l=a[n/+].l;ll r=s;
ll ans=l;
while(l<=r){
ll mid=l+r>>;
if(check(mid)){
ans=mid;
l=mid+;
}
else r=mid-;
}
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. APP逆向常识
  2. Spring 定时器的使用
  3. Linux下Java开发环境搭建—CentOS下Mysql安装教程
  4. Yii源码阅读笔记(七)
  5. android4.4.2 短信广播变更
  6. JS将时间戳转换为JS Date类型
  7. OOP编程特性综合项目
  8. Ajax、Flash优缺点
  9. grunt搭建自动化的web前端开发环境(转)
  10. [AWS vs Azure] 云计算里AWS和Azure的探究(2.1)
  11. html页面布局总结篇
  12. Reusable async validation for WPF with Prism 5
  13. json、JSONObject、JSONArray的应用
  14. linux下常用的几个时间函数:time,gettimeofday,clock_gettime,_ftime
  15. nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
  16. 【转】C#操作xml
  17. 【Python】学习笔记之函数
  18. python进行机器学习(五)之模型打分
  19. linux漏洞分析入门笔记-栈溢出
  20. 微信小程序--背景图片手机无法预览

热门文章

  1. 剑指offer-面试题26-树的子结构-二叉树
  2. gulp常用插件之gulp-uglify使用
  3. simmon effect(psychology experiment) : this time, we add file_function who can creat a file in the window which contains our result
  4. 解决NahimicSvc32.exe与bilibili直播姬的音频不兼容的问题
  5. JavaScript 删除某个数组中指定的对象和删除对象属性
  6. maven依赖报红的一些解决办法
  7. 合理使用Android提供的Annotation来提高代码的质量
  8. 【转载】Cadence验证仿真工具IUS和IES
  9. 大话STM32F103系统架构
  10. 牛客练习赛53-E 老瞎眼 pk 小鲜肉