codeforces 589F:贪心
2016-01-21 21:00
288 查看
每盘菜都要吃到,而且吃的时间是一样
我们按照区间右端点从小到大排序,排在前面的是要优先满足的
假如1号区间是[l,r],2号区间在r之后还有选择,所以1号先考虑
二分一下答案判断一下就好
我们按照区间右端点从小到大排序,排在前面的是要优先满足的
假如1号区间是[l,r],2号区间在r之后还有选择,所以1号先考虑
二分一下答案判断一下就好
#include"cstdio" #include"queue" #include"cmath" #include"stack" #include"iostream" #include"algorithm" #include"cstring" #include"queue" #include"map" #include"set" #include"vector" #define ll long long #define mems(a,b) memset(a,b,sizeof(a)) using namespace std; const int MAXN = 205; const int MAXE = 10050; const int INF = 9999999; struct node{ int l,r; }seg[MAXN]; int vis[MAXE]; int n; bool cmp(node a,node b){ return a.r<b.r; } bool judge(int x){ mems(vis,0); for(int i=0;i<n;i++){ int cnt=0; for(int j=seg[i].l;j<seg[i].r;j++){ if(cnt==x) break; if(!vis[j]) vis[j]=1,cnt++; } if(cnt<x) return false; } return true; } int main(){ int low=0,high=INF,mid; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d",&seg[i].l,&seg[i].r); sort(seg,seg+n,cmp); int ans=0; while(low<=high){ mid=(low+high)>>1; if(judge(mid)){ ans=mid; low=mid+1; } else high=mid-1; } cout<<ans*n<<endl; return 0; }
相关文章推荐
- Spring-data-redis操作redis cluster
- Go语言中调用C语言----类型转换篇
- iOS项目在非测试设备上的安装方法(项目上线前)
- 服务器和客户端的编码问题
- 2016 GDUT Individual Contest2_A题_codeforces 416C(贪心)(重要)
- CPU满格的元凶,这回是由于QTimer引起的(默认interval是0,太猛)
- iOS个人整理12-UIControl与子类:UIPageControl、UIStepper
- CodeForces 603A Alternative Thinking
- MVC定义路由
- Weka数据挖掘——聚类
- 组合模式
- Ubuntu SSH Permission denied (publickey) 远程linux需要公钥
- FPGA内部动态可重置PLL讲解(一)
- 2015系统架构师复习资料分享
- 利用waveIn完成简单录音(录成wav)
- python[五]:python爬虫进阶
- 我的第一个oj博客!
- 使用DOM解析XML文件
- datagrid文字省略显示,全文本悬浮显示!_____http://www.educity.cn/wenda/73553.html
- 深入理解WSAAsyncselect网络模型