D. Salary Changing

大意: 有n个变量, 每个变量有一个取值区间, 要求给这n个变量赋值, 使得n个变量的和不超过S且中位数尽量大(n一定为奇数)

二分答案, 中位数大于等于mid就是问能不能有(n+1)/2个变量的值大于等于mid, 排序贪心就完事了.

#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long i64;
const int maxn = 200002;
struct interval{
int l, r;
bool operator < (const interval &B)const{
return l < B.l;
}
}E[maxn];
bool ok(int target, int n, i64 S){
i64 cost = 0;
int cnt = 0;
for(int i=n;i>=1;--i){
if(cnt*2<n&&E[i].r>=target){
if(E[i].l>=target)cost += E[i].l;
else cost += target;
cnt++;
}else{
cost += E[i].l;
}
}
return cost<=S && cnt*2>n; }
void work(){
i64 S;
int n;
scanf("%d%lld", &n, &S);
for(int i=1;i<=n;++i){
scanf("%d%d", &E[i].l, &E[i].r);
}
sort(E+1, E+n+1);
int L = E[n/2+1].l;
int R = 1000000000;
while(L<=R){
int mid = (L+R)>>1;
if(ok(mid, n, S))L = mid + 1;
else R = mid - 1;
}
printf("%d\n", L-1);
}
int main(){
int t;scanf("%d", &t);
while(t--){
work();
}
return 0;
}

最新文章

  1. iOS 开发技术牛人博客
  2. 转:深入浅出UML类图(具体到代码层次)
  3. 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
  4. (原创)学习MCU的感悟_初级(MCU,经验)
  5. ubuntu Linux 测试PHP却提示下载文件的解决办法
  6. javascript面向对象分层思维
  7. Dockerfile 指令
  8. 由css属性:vertial-align想到的。。
  9. JVM启动参数手册——JVM之八
  10. 关于MyEclipse不停报错multiple problems have occurred 或者是内存不足 的解决办法
  11. 主要排序算法的Java实现
  12. spawn-fcgi运行fcgiwrap
  13. 精读《V8 引擎 Lazy Parsing》
  14. vscode-Live Server的使用心得
  15. 「HAOI2018」染色 解题报告
  16. 洛谷 P3899 [谈笑风生]
  17. sql语句,加引号和不加引号的区别
  18. 表单验证——JqueryValidator、BootstrapValidator
  19. Intel DAAL AI加速 ——传统决策树和随机森林
  20. [leetcode tree]96. Unique Binary Search Trees

热门文章

  1. Linux下将.Asp Core 部署到 Docker容器中
  2. html中定义模板
  3. Word 查找替换高级玩法系列之 -- 通配符大全B篇
  4. JSON.stringify()序列化的理解及使用
  5. EgretWing链接微信开发工具调试问题
  6. C# vb .net图像合成-多图片叠加合成
  7. js调用浏览器下载
  8. 洛谷【P1048 采药】题解
  9. Laravel 5.5 发布,ThinkSNS+ 升级及状况分享
  10. kubernetes第十二章--监控