UVALive 3177 长城守卫
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1178
http://7xjob4.com1.z0.glb.clouddn.com/8e1ee1ef5ea10e46ebda75b88b058f47
题意:n个人围圈,每人有不同或相同数量礼物,相邻礼物不能一样,求最少总礼物数。
思路: n是偶数:为相邻两人礼物数和的最大值;n是奇数:二分法选礼物数量,看是否可行,设第一个人礼物为前几种,编号为偶数的人尽量在前面取,奇数的人尽量在后面取,最后查看最后一人的礼物是否和第一个人的冲突。
#include <bits/stdc++.h>
using namespace std; int n;
int r[],Left[],Right[]; int check(int p)
{
int i,j;
int x=r[],y=p-r[];
Left[]=x,Right[]=;
for(i=;i<=n;i++)
{
if(i%==)
{
Left[i]=min(x-Left[i-],r[i]);
Right[i]=r[i]-Left[i];
}
else
{
Right[i]=min(y-Right[i-],r[i]);
Left[i]=r[i]-Right[i];
}
}
if(Left[n]==)
return ;
return ;
} int main()
{
int i,j;
while(scanf("%d",&n)!=EOF && n!=)
{
for(i=;i<=n;i++)
{
scanf("%d",&r[i]);
}
if(n==)
{
printf("%d\n",r[]);
continue;
} int L=,R=;r[n+]=r[];
for(i=;i<=n;i++) L=max(L,r[i]+r[i+]);
if(n%==)
{
for(i=;i<=n;i++) R=max(R,r[i]*);
while(L<R)
{
int mid=(L+R)/;
if(check(mid))
{
R=mid;
}
else
{
L=mid+;
}
}
}
printf("%d\n",L);
}
return ;
}
UVALive 3177 长城守卫的更多相关文章
- LA 3177 长城守卫
n为偶数的时候比较简单,就是相邻两个守卫的礼物和的最大值. 首先这是个下限,其次这个值也满足题目要求,所以这就是答案了. 当n为奇数的时候上限是守卫索要礼物的最大值的三倍. 这也很容易理解,比如n=5 ...
- UVALive 3177 Beijing Guards
题目大意:给定一个环,每个人要得到Needi种物品,相邻的人之间不能得到相同的,问至少需要几种. 首先把n=1特判掉. 然后在n为偶数的时候,答案就是max(Needi+Needi+1)(包括(1,n ...
- Uva 长城守卫——1335 - Beijing Guards
二分查找+一定的技巧 #include<iostream> using namespace std; +; int n,r[maxn],Left[maxn],Right[maxn];//因 ...
- LA3177长城守卫
题意: 有n个人围成一个圈,每个人都有r[i]个礼物,任意两个相邻的人的礼物不能有重复的,问满足所有相邻不重复的最少礼物种数是多少?就是问最少多少种礼物能让任意相邻的两个人的礼物不重复. 思 ...
- L3-009 长城 (30 分)
正如我们所知,中国古代长城的建造是为了抵御外敌入侵.在长城上,建造了许多烽火台.每个烽火台都监视着一个特定的地区范围.一旦某个地区有外敌入侵,值守在对应烽火台上的士兵就会将敌情通报给周围的烽火台,并迅 ...
- pat 团体天梯赛 L3-009. 长城
L3-009. 长城 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 邓俊辉(清华大学) 正如我们所知,中国古代长城的建造是为了抵御外 ...
- cccc初赛 L3-003 长城
L3-009. 长城 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 邓俊辉 正如我们所知,中国古代长城的建造是为了抵御外敌入侵.在长 ...
- UVALive - 4108 SKYLINE[线段树]
UVALive - 4108 SKYLINE Time Limit: 3000MS 64bit IO Format: %lld & %llu Submit Status uDebug ...
- UVALive - 3942 Remember the Word[树状数组]
UVALive - 3942 Remember the Word A potentiometer, or potmeter for short, is an electronic device wit ...
随机推荐
- Java提高篇——理解String 及 String.intern() 在实际中的应用
1. 首先String不属于8种基本数据类型,String是一个对象. 因为对象的默认值是null,所以String的默认值也是null:但它又是一种特殊的对象,有其它对象没有的一些特性. 2. ...
- Python模块应用 (linecache)
linecache linecache是专门支持读取大文件,而且支持行式读取的函数库. linecache 预先把文件读入缓存起来,后面如果你访问该文件的话就不再从硬盘读取.对于大文件的读取效率还不错 ...
- (转)nodejs中npm常用命令
npm install <name>安装nodejs的依赖包 例如npm install express 就会默认安装express的最新版本,也可以通过在后面加版本号的方式安装指定版本, ...
- SqlServer try catch 捕获不到的一些错误及解决方法(转载)
测试注意 :①假如系统能捕获异常 ,并且我们自己开启了事务.系统会自动 回滚事务的,但是 我们还是要在catch里面加上 rollback tran的习惯,这样也不会提示重复rollback的错误,这 ...
- layzr.js新版使用方法
转载请注明出处:http://www.cnblogs.com/fiter/p/5413919.html 前言 今天研究这个JS库,本人新手,将官方的js代码下载下来后始终无法正常使用,经过多番尝试,终 ...
- Uploadify/uploadifive上传(中文文档)
Uploadify是一款基于JQuery的优秀的文件/图片上传的插件,有基于Flash和HTML5两种版本. Uploadify/uploadifive主要特点有: 1. 多文件上传 2. 个性化设 ...
- 引用iScroll.js实现上拉和下拖刷新
使用技巧 1.引用iScroll.js, 在初始化时添加两个事件监听:touchMove.DOMContentLoaded. 2.实现iScroll插件的onScrollEnd事件, 也就是在这个事件 ...
- Hadoop namenode无法启动
最近遇到了一个问题,执行start-all.sh的时候发现JPS一下namenode没有启动 每次开机都得重新格式化一下namenode才可以 其实问题就出在tmp文件,默 ...
- 【数学】Matrix Multiplication
Matrix Multiplication Time Limit: 2000MS Memory Limit: 65536K Total S ...
- 实现一个自适应网页用到的css知识
1 div导致父级高度没有变化是应该子元素设置了float:left等 2 div元素居中 text-align:center; margin-left: auto;margin-right: 3 大 ...