• BZOJ 1863: [Zjoi2006]trouble 皇帝的烦恼( 二分答案 )


    二分答案..然后从头到尾推一下, 看最后一个能不能取0个和第一个人相同的勋章 

    -----------------------------------------------------------------------

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
     
    using namespace std;
     
    const int maxn = 20009;
     
    int w[maxn], Min[maxn], Max[maxn], N;
     
    void init() {
    scanf("%d", &N);
    for(int i = 0; i < N; i++) scanf("%d", w + i);
    }
     
    bool check(int x) {
    if(w[0] + w[N - 1] > x) return false;
    for(int i = 1; i < N; i++)
    if(w[i - 1] + w[i] > x) return false;
    Min[0] = Max[0] = w[0];
    for(int i = 1; i < N; i++) {
    Max[i] = min(w[i], w[0] - Min[i - 1]);
    if(x - w[i - 1] - (w[0] - Max[i - 1]) >= w[i])
    Min[i] = 0;
    else
    Min[i] = w[i] - (x - w[i - 1] - (w[0] - Max[i - 1]));
    }
    return !Min[N - 1];
    }
     
    int main() {
    init();
    int L = 1, R = 1000000, ans;
    while(L <= R) {
    int m = (L + R) >> 1;
    if(check(m))
    ans = m, R = m - 1;
    else
    L = m + 1;
    }
    printf("%d ", ans);
    return 0;
    }

    ----------------------------------------------------------------------- 

    1863: [Zjoi2006]trouble 皇帝的烦恼

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 475  Solved: 245
    [Submit][Status][Discuss]

    Description

    经过多年的杀戮,秦皇终于统一了中国。为了抵御外来的侵略,他准备在国土边境安置n名将军。不幸的是这n名将军羽翼渐丰,开始展露他们的狼子野心了。他们拒绝述职、拒绝接受皇帝的圣旨。秦皇已经准备好了秘密处决这些无礼的边防大将。不过为防兵变,他决定先授予这些将军一些勋章,为自己赢得战略时间。将军们听说他们即将被授予勋章都很开心,他们纷纷上书表示感谢。第i个将军要求得到ai枚不同颜色的勋章。但是这些将军都很傲气,如果两个相邻的将军拥有颜色相同的勋章他们就会认为皇帝不尊重他们,会立即造反(编号为i的将军和编号为i+1的将军相邻;因为他们驻扎的边境可以类似看成一个圆形,所以编号1和编号n的将军也相邻)。皇帝不得不满足每个将军的要求,但对他们的飞扬跋扈感到很气愤。于是皇帝决定铸造尽量少种类的勋章来满足这些狂妄者的要求。请问他至少要铸造多少种颜色的勋章?

    Input

    第一行有一个整数n(1<=n<=20000)。接下来n行每行一个整数ai,表示第i个将军要求得到多少种勋章。(1<=ai<=100000) 输出一个整数,即最少需要多少种勋章。

    Output

    4 2 2 1 1

    Sample Input

    4

    Sample Output

    HINT

    Source

  • 相关阅读:
    学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder
    Runtime 、 Block
    NSDictionary 、 NSMutableDictionary
    NSArray(二) 、 NSMutableArray 、 NSSet 、 NSMutableSet
    NSNumber 、 NSValue 、 日期处理 、 集合类 、 NSArray(一)
    (Foundation)NSObject 、 NSString 、 NSMutableString
    Objective-c---分类 、 扩展 、 ARC
    Objective-C--- 多态 、 协议
    关于Quartz2D方法小总结
    控制器之间的顺传与逆传
  • 原文地址:https://www.cnblogs.com/JSZX11556/p/4897741.html
Copyright © 2020-2023  润新知