描述

今日又在看甄嬛传,皇上觉得后宫们的勾心斗角太险恶了,有点不好,决定给每个妃子发丝带以让后宫之间和睦相处。皇上一共有N个后宫(标号为1~n),站成一个环形(1号与n号相邻),每个后宫想要ai个丝带,而且这ai个丝带颜色互不相同,而且每个妃子拥有的丝带不能与和她相邻的妃子的丝带有任何一种颜色相同。

皇上不喜欢太多的颜色,所以皇上就像知道最少需要多少种颜色就能满足所有后宫的要求,设最小颜色为M,而甄嬛想提前知道M的值,以告诉皇上来赢得欢心,然而在皇上后宫太多了,她就不会了,所以呢,她向学信息奥赛的你求助,并答应事成之后奖励你

(21,000,000,006mod1,000,000,007)−1(21,000,000,006mod1,000,000,007)−1吨黄金

输入

第一行一个整数n,接下来有n个数字,第i个数字为ai,表示编号为i的后宫想要ai条丝带。

输出

一个整数表示M

样例输入

13
960
2
465
159
628
110
88
592
193
546
880
400
622

样例输出

1582

数据范围: 40%的数据:n mod 2==0。0<=ai<=1,000,000,000; 100%的数据:n<=20000。0<=ai<=1,000,000,000;

----------------------------------------------------这是一条分界线-------------------------------------------------------

这道题首先想到的是贪心,分类讨论n%2=1和n%2=0的情况(但听说最高调到了90分????)

而实际上这是个二分答案。二分ans,并判定其是否满足

而说到判定,我觉得这个过程又有点像DP.....

【以下受某blog启发】

“

判定答案ans,即1与n的最小冲突个数是否为0令mi[i]表示1与i的最小冲突个数,ma[i]表示1与i的最大冲突个数。

那么有: 

      1.最多能冲突那么就是全部都冲突了或是分了上一个冲突了的。 

      ma[i]=min{ ai,a1−mi[i−1] }

      

      2.最小能冲突那么就是一个都不冲突,否则需要知道最多不冲突的个数,由上一个最多冲突的个数求得。 

      mi[i]=max{ 0,ai-[ans-ai-1-(a1-ma[i-1])] }

那么mi[n]==0就表示当前答案可行

                ”

于是贴代码~

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int n,ans;
int ma[],mi[];
int a[];
bool check(int x)
{
ma[]=mi[]=a[];
for(int i=;i<=n;i++)
{
ma[i]=min(a[i],a[]-mi[i-]);
mi[i]= max( , a[i] - ( x-a[i-]-(a[]-ma[i-]) ) );
}
return mi[n];
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
ans=max(ans,a[i]+a[i-]);
int l=ans,r=ans*,mid;
while(l<=r)
{
mid=(l+r)>>;
if (check(mid)) l=mid+;
else r=mid-;
}
printf("%d",l);
return ;
}

SDOJ 1195 Zhenhuan的更多相关文章

  1. gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,

    1195: 相信我这是水题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 821  Solved: 219 Description GDUT中有个风云人 ...

  2. poj 1195:Mobile phones(二维树状数组,矩阵求和)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14489   Accepted: 6735 De ...

  3. poj 1195:Mobile phones(二维线段树,矩阵求和)

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14391   Accepted: 6685 De ...

  4. ACdream 1195 Sudoku Checker (数独)

    Sudoku Checker Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit ...

  5. POJ 1195

    Mobile phones Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 13774   Accepted: 6393 De ...

  6. hdu 1195 Open the Lock

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1195 Open the Lock Description Now an emergent task f ...

  7. poj 1195 Mobile phones(二维树状数组)

    树状数组支持两种操作: Add(x, d)操作:   让a[x]增加d. Query(L,R): 计算 a[L]+a[L+1]……a[R]. 当要频繁的对数组元素进行修改,同时又要频繁的查询数组内任一 ...

  8. bzoj 1195: [HNOI2006]最短母串 爆搜

    1195: [HNOI2006]最短母串 Time Limit: 10 Sec  Memory Limit: 32 MBSubmit: 894  Solved: 288[Submit][Status] ...

  9. bzoj 1195

    http://www.lydsy.com/JudgeOnline/problem.php?id=1195 状压DP. 首先去掉被包含的字符串. 对于字符串i和j,我们求出 当字符串j的左端点在字符串i ...

随机推荐

  1. ae(ArcEngine) java swing开发入门系列(1):开发环境和代码部署

    前言:做ae开发大部分人都是用C#版,很少用到java版,本系列文章主要介绍java版ae开发的入门,对于ae接口的高级应用,可以看C#版相关文章 开发环境软件: Intellij IDEA 2018 ...

  2. i-nex安装教程

    sudo add-apt-repository ppa:i-nex-development-team/stable sudo apt-get updatesudo apt-get i-nex

  3. python中的uuid4

    Help on function uuid4 in module uuid: uuid4()    Generate a random UUID.

  4. JavaScript命名——name不能做变量名

    使用name作为变量名(var name = ‘’),在IE中未引起bug,在Chrome中引起bug但未明确指出命名错误,而是会报其他错误,故不便于发现. 现象原因: javascript中name ...

  5. 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector

    题目描述 Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining diamonds in her s ...

  6. 设置DataGridView单元格的文本对齐方式

    实现效果: 知识运用: DataGridViewCellStyle类的Alignment属性     //获取或设置DataGridView单元格内的单元格内容的位置 public DataGridV ...

  7. Spring boot 集成Kafka

    搭建Kafka集群,参考: https://www.cnblogs.com/jonban/p/kafka.html 源码示例如下: 1.新建 Maven 项目 kafka 2.pom.xml < ...

  8. CORS的原理及应用

    CORS的原理及应用 CORS是跨站资源共享,同样是解决浏览器的同源策略 其本质是设置响应头,使得浏览器允许跨域请求. 第三方网站返回数据的时候在浏览器的响应头中添加允许的域名,允许所有的用* 1 简 ...

  9. NSString 使用 copy、strong

    // 首先定义2个属性 @property (nonatomic, strong) NSString *stStr; @property (nonatomic, copy) NSString *coS ...

  10. ubuntu 16.04 +anaconda3.6 +Nvidia DRIVER 390.77 +CUDA9.0 +cudnn7.0.4+tensorflow1.5.0+neural-style

    这是我第一个人工智能实验.虽然原理不是很懂,但是觉得深度学习真的很有趣.教程如下. Table of Contents 配置 时间轴 前期准备工作 anaconda3 安装 bug 1:conda:未 ...