竟然用二分,真是想不到;

偶数的情况很容易想到;不过奇数的就难了;

奇数的情况下,一个从后向前拿,一个从前向后拿的分配方法实在太妙了!

注:

白书上的代码有一点点错误

代码:

 #include<cstdio>
#define maxn 100009
#include<algorithm>
using namespace std; int p[maxn],right[maxn],left[maxn],n; bool check(int m)
{
int x=p[],y=m-p[];
left[]=x;right[]=;
for(int i=;i<=n;i++)
{
if(i&)
{
right[i]=min(y-right[i-],p[i]);
left[i]=p[i]-right[i];
}
else
{
left[i]=min(x-left[i-],p[i]);
right[i]=p[i]-left[i];
}
}
return left[n]==;
} int main()
{
while(scanf("%d",&n)&&n)
{
for(int i=;i<=n;i++)scanf("%d",&p[i]);
p[n+]=p[];
if(n==){printf("%d\n",p[]);continue;}
int l=,r=;
for(int i=;i<=n;i++)l=max(l,p[i]+p[i+]);
if(n&)
{
for(int i=;i<=n;i++)r=max(r,p[i]*);
while(l<r)
{
int mid=(l+r)>>;
if(check(mid))r=mid;
else l=mid+;
}
}
printf("%d\n",l);
}
return ;
}

uva 1335 - Beijing Guards的更多相关文章

  1. uva 1335 - Beijing Guards(二分)

    题目链接:uva 1335 - Beijing Guards 题目大意:有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物.如果两个相邻的人拥有同一种礼物, ...

  2. 【二分答案+贪心】UVa 1335 - Beijing Guards

    Beijing was once surrounded by four rings of city walls: the Forbidden City Wall, the Imperial City ...

  3. UVA 1335 Beijing Guards(二分答案)

    入口: https://cn.vjudge.net/problem/UVA-1335 [题意] 有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物.如果两个 ...

  4. UVa 1335 Beijing Guards (二分+贪心)

    题意:n 个人成一个圈,每个人想要 ri 种不同的礼物,要求相邻两个人没有相同的,求最少需要多少礼物. 析:如果 n 是偶数,那么答案一定是相邻两个人的礼物总种数之和的最大值,那么如果是奇数,就没那么 ...

  5. Uva 长城守卫——1335 - Beijing Guards

    二分查找+一定的技巧 #include<iostream> using namespace std; +; int n,r[maxn],Left[maxn],Right[maxn];//因 ...

  6. LA 3177 Beijing Guards(二分法 贪心)

    Beijing Guards Beijing was once surrounded by four rings of city walls: the Forbidden City Wall, the ...

  7. UVALive 3177 Beijing Guards

    题目大意:给定一个环,每个人要得到Needi种物品,相邻的人之间不能得到相同的,问至少需要几种. 首先把n=1特判掉. 然后在n为偶数的时候,答案就是max(Needi+Needi+1)(包括(1,n ...

  8. LA3177 Beijing Guards

    Beijing Guards Beijing was once surrounded by four rings of city walls: the Forbidden City Wall, the ...

  9. 题解 UVA1335 【Beijing Guards】

    UVA1335 Beijing Guards 双倍经验:P4409 [ZJOI2006]皇帝的烦恼 如果只是一条链,第一个护卫不与最后一个护卫相邻,那么直接贪心,找出最大的相邻数的和. 当变成环,贪心 ...

随机推荐

  1. C++实现多线程类Thread

    Windows编程中创建线程的常见函数有:CreateThread._beginthread._beginthreadex.据说在任何情况下_beginthreadex都是较好的选择. _begint ...

  2. Android 里面的小坑

    1.listview加了个blockdescen,竟然导致editTextView不能获取焦点

  3. ACM/ICPC ZOJ1009-Enigma 解题代码

    #include <iostream> #include <string> using namespace std; int main() { int strwide; cin ...

  4. c# web页面乱码

    1.在web.config中加入:<globalization requestEncoding="GB2312" responseEncoding="GB2312& ...

  5. 关于cnpm的一点小bug

    在实际工作中,一个项目完成后,在上线前,常常需要把代码进行压缩,一般是用gulp或者 webpack 进行压缩.(小妹是用gulp) gulp是运行在node 环境下的. 所以首先,下载并安装了nod ...

  6. Linux常用(持续更新)

    1. scp ./bcec_computernode_check.sh  root@10.254.3.1:/tmp 2. # uname -a # cat /proc/version # cat /e ...

  7. 实例:图像载入、显示、混合与输出[OpenCV 笔记8]

    是的是的,忍着尿意努力更新,就是为了更到wuli男神的部分,当然要把男神放在前面镇楼,欢迎下载配图,具体操作见code wuliEddie.jpg logo.png results.jpg LoadS ...

  8. C++里容易忽视却不能忽视的

    1 define 只是简单地文本替换. 2 每个机器的字长不同. 3 每个类型在不同的机器上,所占用的内存空间不同. 4 每个机器内部的字节大小端不同. 5 并不是所有的编译器或机器都支持最新的C++ ...

  9. SQL优化(2)

    建表时候数据库引擎的选择也可以达到优化的效果 InnoDB: 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的大小只受限于操作系统文件的大小,一般为 2GB MyISAM: ...

  10. Kali linux网络配置

    Kali linux 安装完成后,需要对其网络进行配置.使用DHCP服务是配置网卡最简单的方法之一,但渗透测试时通常不会这样做,因为系统会被记录在DHCP服务器的数据库中. 1  动态DHCP方式 配 ...