二分+贪心——cf1251D
2024-10-07 19:14:53
二分的时候要特别注意一下下界L
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 200005 ll n,s;
struct Node{
ll l,r;
}p[N];
int cmp(Node a,Node b){
return a.l<b.l;
} int judge(ll mid){
int cnt1=,cnt2=;
for(int i=;i<=n;i++){
if(p[i].l>mid)cnt2++;
if(p[i].r<mid)cnt1++;
}
if(cnt1>n/)return ;//偏大了 if(1.0*mid*(n/+)>s) return ; ll tot=,cnt=cnt1;
for(int i=;i<=n;i++){
if(p[i].l<=mid && p[i].r>=mid){
++cnt;
if(cnt<=n/)
tot+=p[i].l;
else if(cnt>=n/+)
tot+=mid;
}
else tot+=p[i].l;
} if(tot>s)return ;
return ;
} int main(){
int t;cin>>t;
while(t--){
cin>>n>>s;
for(int i=;i<=n;i++)
scanf("%lld%lld",&p[i].l,&p[i].r);
sort(p+,p++n,cmp); ll L=p[n/+].l,R=s,mid,ans;
while(L<=R){
mid=L+R>>;
if(judge(mid)){
ans=mid;
L=mid+;
}
else {
R=mid-;
}
} cout<<ans<<'\n';
}
}
最新文章
- Windows on Device 项目实践 2 - 感光灯制作
- Python 第五天 装饰器
- Go语言接口
- 常用 Git 命令清单(摘录)
- mysq错误(1)空用户创建库
- Mysql 数据库文件存储在哪个目录
- IOS DLNA开发(CyberLink和PlatinumKit)
- OpenCV——写手势识别碰到的各种错误
- MailBee的简单使用
- 使用数组实现队列----《数据结构与算法分析---C语言描述》
- cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!
- Swift - 使用NSUserDefaults来进行本地数据存储
- poj1947(树形dp)
- JSP简单的练习-功能标签
- select中的文字垂直居中的问题
- Android Screen Monito
- Linux下*.tar.gz/.tar.bz2 文件解压缩安装命令
- DataGuard 单实例到RAC搭建
- 【WC2018】即时战略(动态点分治,替罪羊树)
- openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录