【数学归纳法】【二分答案】17.1.24 T3 zhenhuan题解
来源:互联网 发布:win32系统编程电子书 编辑:程序博客网 时间:2024/06/02 19:55
Zhenhuan
今日又在看甄嬛传,皇上觉得后宫们的勾心斗角太险恶了,有点不好,决定给每个妃子发丝带以让后宫之间和睦相处。皇上一共有N个后宫(标号为1~n),站成一个环形(1号与n号相邻),每个后宫想要ai个丝带,而且这ai个丝带颜色互不相同,而且每个妃子拥有的丝带不能与和她相邻的妃子的丝带有任何一种颜色相同。皇上不喜欢太多的颜色,所以皇上就像知道最少需要多少种颜色就能满足所有后宫的要求,设最小颜色为M,而甄嬛想提前知道M的值,以告诉皇上来赢得欢心,然而在皇上后宫太多了,她就不会了,所以呢,她向学信息奥赛的你求助,并答应事成之后奖励你
((21,000,000,006 mod 1,000,000,007 )-1)吨黄金
输入格式:
第一行一个整数n,接下来有n个数字,第i个数字为ai,表示编号为i的后宫想要ai条丝带。
输出格式:
共一行,一个整数表示M。
卖萌:
/这道题是最萌的(⊙_⊙)?我不知道/
数据范围:
40%的数据:n mod 2==0。0<=ai<=1,000,000,000;
100%的数据:n<=20000。0<=ai<=1,000,000,000;
由数据规模不难得出我们可以分类考虑。
当n mod 2 == 0时,有相邻两个妃子之和最大即为所求。
当n mod 2 == 1时,有(大概)相邻两个妃子之和最大与相邻另一个妃子最小。
但是这只有80分,我也不知道为什么(误)
这道题目有神公式。但是我不知道为什么?
先二分答案:
设为K,然后维护两个东西l[i],r[i],分别表示第i个妃子可以最少和最多与1号妃子有的相同的颜色数。如果l[n]>0则K不可行。(想想为什么~)恩,
然后r[i]=min(a[i],a[1]-l[i-1])
l[i]=max(a[1]-r[i-1]+a[i-1]+a[i]-K,0)
所以附80分代码:
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <set>#include <queue>#include <algorithm>#include <vector>#include <cstdlib>#include <cmath>#include <ctime>#include <stack>using namespace std;const int N = 20010;int n,m;int a[N];template <class T> inline void read(T &x){ x = 0; int flag = 1; char ch = (char)getchar(); while(ch<'0' || ch>'9') { if(ch=='-') flag = -1; ch = (char)getchar(); } while(ch>='0' && ch<='9') { x = (x<<1) + (x<<3) + ch-'0'; ch = (char)getchar(); } x *= flag;}void work(){ for(int i = 1; i < n; i++) if(m < a[i]+a[i+1]) m = a[i]+a[i+1]; if(m < a[1]+a[n]) m = a[1]+a[n];}void work2(){ for(int i = 1; i < n-1; i++) if(m < a[i]+a[i+1]+a[i+2]) m = a[i]+a[i+1]+a[i+2]; if(m < a[1]+a[n-1]+a[n]) m = a[1]+a[n-1]+a[n]; if(m < a[1]+a[2]+a[n]) m = a[1]+a[2]+a[n];}int main(){ freopen("zhenhuan.in","r",stdin); freopen("zhenhuan.out","w",stdout); read(n); for(int i = 1; i <= n; i++) read(a[i]); if(n == 2) work(); else work2(); printf("%d",m); return 0;}
本来应该280第三名的,但是T1定义后忘了ctrl+s于是…….
面壁思过ing
- 【数学归纳法】【二分答案】17.1.24 T3 zhenhuan题解
- 【数学归纳法】单峰数列 题解
- NOIP模拟题 2016.11.8 [数学归纳法] [贪心] [二分答案] [Bash模拟]
- 【二项式定理】【数学归纳法】超立方体 题解
- 【BZOJ3760】【最小覆盖】【二分答案】17.1.24 T2 suitang题解
- 数学答案(数列、极限、数学归纳法)-[仅供内部参考]
- 数学归纳法
- 数学归纳法
- 数学归纳法
- 数学归纳法
- 【NOIP模拟题】【数学归纳法】2016.11.10第一题题解
- 数学归纳法和递归
- 递归与数学归纳法
- 数学归纳法原理
- 第二数学归纳法
- hdu 2086 数学归纳法
- hdu 1098 数学归纳法
- 数学归纳法初探
- 网站做登录认证怎么做?
- zephyer系统在STM32F411-Nucleo平台上运行和基于openOCD的裸机调试环境搭建
- MXNet | 手写字MNIST识别比赛
- 在chrome浏览器下 input的autocomplete="off"失效,导致的自动填充
- 【9923】对抗赛
- 【数学归纳法】【二分答案】17.1.24 T3 zhenhuan题解
- Java 项目、Node前端项目 gitignore文件
- spring装配Bean(基于xml)
- 2016工作生活记录
- 我的2016
- angularjs项目记录
- 第一个Angular 2 Application
- D3D11地形渲染教程十二之Clouds(云)
- 本人收录的几个常用网站