二分+贪心+LA3177
来源:互联网 发布:网络词不鸽是什么意思? 编辑:程序博客网 时间:2024/05/16 09:12
思路:当n为偶数的时候,答案为max{r(i)+r(i+1)},当n为技术的时候,第一个人取1-r1件,剩下的编号为偶数的尽量往前去,技术的尽量往后去。
下面是代码:
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;const int maxn=100010;int n,r[maxn],left1[maxn],right1[maxn];bool can(int mid){ int x=r[1],y=mid-r[1]; left1[1]=x; right1[1]=0; for(int i=2; i<=n; i++) { if(i%2) { right1[i]=min(y-right1[i-1],r[i]); left1[i]=r[i]-right1[i]; } else { left1[i]=min(x-left1[i-1],r[i]); right1[i]=r[i]-left1[i]; } } return left1[n]==0;}int main(){ #ifndef ONLINE_JUDGE freopen("in.txt","r",stdin); #endif while(cin>>n,n) { int max1=0; for(int i=1; i<=n; i++) cin>>r[i]; if(n==1) { cout<<r[1]<<endl; continue; } r[n+1]=r[1]; int l=0,R=0,mid; for(int i=1; i<=n; i++) if(l<r[i]+r[i+1]) l=r[i]+r[i+1]; if(n%2) { for(int i=1; i<=n; i++) R=max(R,r[i]*3); while(l<R) { mid=(l+R)/2; if(can(mid)) R=mid; else l=mid+1; } } cout<<l<<endl; } return 0;}
0 0
- 二分+贪心+LA3177
- LA3177
- 二分+贪心
- 贪心 + 二分
- 贪心二分
- 贪心+二分
- 贪心(bnuoj49103+二分+贪心)
- BNU 49103 贪心【二分+贪心】
- Beijing Guards LA3177
- LA3177长城守卫
- hdu pie(二分+贪心)
- POJ3497 Assemble 二分+贪心
- mysterious 二分加贪心
- HDU 3650 贪心+二分
- 11627 - Slalom (二分+贪心)
- hdu4004(二分+贪心)
- hdu1677(贪心+二分)
- poj2456(贪心+二分)
- linux下RAR的安装和使用
- 使用AlertDialgo创建自定义对话框
- 最牛B的编码套路
- Java知识总结-内部类
- db file sequential read等待事件
- 二分+贪心+LA3177
- 8.HTML5 CSS3大小、定位、轮廓相关属性
- 農業朝鮮 1938.3 옛날 농민은 어떻게 살았나?
- Android 开发TCP、UdP客户端
- php通过COM类调用组件
- asp.net mvc如何实现下载文件
- Gvim开发环境配置笔记--Windows篇
- 使用ip route命令实现多链路负载均衡
- 堆排序(最小堆)--【算法导论】