题面

题意:有n个人为成一个圈,其中第i个人想要r[i]种不同的礼物,相邻的两个人可以聊天,炫耀自己的礼物。如果两个相邻的人拥有同一种礼物,则双方都会很不高兴,问最少需要多少种不同的礼物才能满足所有人的需求,假设每种礼物有无限多个。 n<=100000

题解:

对于n==1 直接输出a[1]

对于n是偶数,找相邻两个和的最大值

对于n是奇数,现在假设有m个奖品,1号放1---a[1],2号开始的偶数号都尽量放小的

奇数都尽量放大的,尽量的意思就是避开前一个的范围就好。

于是我们二分m这个值就好

 ​#include<bits/stdc++.h>
#define N 100005
using namespace std;
int n,a[N],rr[N],ll[N],st,ed;
int ans,l,r;
int main()
{
while (scanf("%d",&n)!=EOF && n!=)
{
memset(a, , sizeof(a));  
int why=;
for (int i=;i<=n;i++) 
{
scanf("%d",&a[i]);
why=max(why,a[i]*);
}
if (n==)
{
printf("%d\n",a[]);
continue;
}else
if (n%==)
{
ans=a[]+a[n];
for (int i=;i<=n;i++)
ans=max(ans,a[i]+a[i-]);
printf("%d\n",ans); 
}else
{
r=why+;
l=a[]+a[n];
for (int i=;i<=n;i++)
l=max(l,a[i]+a[i-]);
while (l<r)
{
int mid=(l+r)/;
st=a[];
ed=mid-a[];
ll[]=st; 
rr[]=;
for (int i=;i<=n;i++)
{
if (i%==) 
{
rr[i]=min(ed-rr[i-],a[i]);
ll[i]=a[i]-rr[i];
}else
{
ll[i]=min(st-ll[i-],a[i]);
rr[i]=a[i]-ll[i];
}
}
if (ll[n]==) r=mid;else l=mid+;
}
printf("%d\n",l);
}
}
return ;

UVA-1335(UVALive-3177) Beijing Guards 贪心 二分的更多相关文章

  1. UVALive 3177 Beijing Guards

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

  2. Uva LA 3177 - Beijing Guards 贪心,特例分析,判断器+二分,记录区间内状态数目来染色 难度: 3

    题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

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

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

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

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

  5. uva 1335 - Beijing Guards(二分)

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

  6. UVALive 2949 Elevator Stopping Plan(二分 + 贪心)

    ZSoft Corp. is a software company in GaoKe Hall. And the workers in the hall are very hard-working. ...

  7. LA3177 Beijing Guards

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

  8. 题解 UVA1335 【Beijing Guards】

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

  9. poj 2782 Bin Packing (贪心+二分)

    F - 贪心+ 二分 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Description ...

随机推荐

  1. apicloud常用分享方法

    app中经常会有分享的功能,不管是分享商品还是文字还是图片或者是发送给微信好友扣扣好友,一下做一总结. 分享的样式(分享所有的样式模块):MNActionButton. 在apicloud 中添加这个 ...

  2. [Java]链表的打印,反转与删除

    class Node{ public int value; public Node next=null; public Node(int value) { this.value=value; } }p ...

  3. EL截取url中参数

    function getUrlString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*) ...

  4. Node.js标准的回调函数

    Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果. function (err, data) 当正常读取时,err参数为null,data参数为读取到的String.当读取发生 ...

  5. JQuery的click,trigger触发a标签的click事件无效的问题分析

    今天在做一个手机端webAPP链接下载的时候,给a标签一个下载链接,但是通过 <a id="downFile" download="" href=&quo ...

  6. Mysql [Err] 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.

    对于越来越多的数据,数据库的容量越来越大,压缩也就越来越常见了.在我的实际工作中进行过多次压缩工作,也遇到多次问题,在此和大家分享一下. 首先,我们先说说怎么使用innodb的压缩. 第一,mysql ...

  7. 15.5.4 【Task实现细节】一个入口搞定一切

    如果你反编译过异步方法(我非常希望你会这么做),会看到状态机中的 MoveNext() 方法 非常长,变化非常快,像是一个计算有多少 await 表达式的函数.它包含原始方法中的所有逻辑, 和处理所有 ...

  8. Ubuntu的shell执行过程

    登录shell(login shell)会执行.bash_profile,.bash_profile中会执行.profile,.profile中会执行.bashrc 非登录shell(non-logi ...

  9. Android 自己定义TextView 实现文本间距

    转载请标明出处: http://blog.csdn.net/u011974987/article/details/50845269: Android系统中TextView默认显示中文时会比較紧凑.不是 ...

  10. [React] Refactor componentWillReceiveProps() to getDerivedStateFromProps() in React 16.3

    The componentWillReceiveProps() method is being deprecated in future version of React (17). Many of ...