zoukankan      html  css  js  c++  java
  • [BZOJ1651][Usaco2006 Feb]Stall Reservations 专用牛棚

    1651: [Usaco2006 Feb]Stall Reservations 专用牛棚

    Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 990  Solved: 568 [Submit][Status][Discuss]

    Description

    Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked over some precise time interval A..B (1 <= A <= B <= 1,000,000), which includes both times A and B.  Obviously, FJ must create a reservation system to determine which stall each cow can be assigned for her milking time. Of course, no cow will share such a private moment with other cows.  Help FJ by determining: * The minimum number of stalls required in the barn so that each   cow can have her private milking period * An assignment of cows to these stalls over time 

    有N头牛,每头牛有个喝水时间,这段时间它将专用一个Stall 现在给出每头牛的喝水时间段,问至少要多少个Stall才能满足它们的要求

    Input

    * Line 1: A single integer, N

    * Lines 2..N+1: Line i+1 describes cow i's milking interval with two         space-separated integers.

    Output

    * Line 1: The minimum number of stalls the barn must have.

      * Lines 2..N+1: Line i+1 describes the stall to which cow i will be         assigned for her milking period.

    Sample Input

    5
    1 10
    2 4
    3 6
    5 8
    4 7

    Sample Output

    4


    OUTPUT DETAILS:

    Here's a graphical schedule for this output:

    Time     1  2  3  4  5  6  7  8  9 10
    Stall 1 c1>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Stall 2 .. c2>>>>>> c4>>>>>>>>> .. ..
    Stall 3 .. .. c3>>>>>>>>> .. .. .. ..
    Stall 4 .. .. .. c5>>>>>>>>> .. .. ..

    Other outputs using the same number of stalls are possible.
     
    问的就是被区间覆盖次数的最大值,用查分数组维护覆盖,然后扫一遍计算答案
    #include <cstdio>
    inline int readint(){
        int n = 0;
        char ch = getchar();
        while(ch < '0' || ch > '9') ch = getchar();
        while(ch <= '9' && ch >= '0'){
            n = (n << 1) + (n << 3) + ch - '0';
            ch = getchar();
        }
        return n;
    }
    template <typename _Tp>
    inline _Tp max_(const _Tp &a, const _Tp &b){
        return a > b ? a : b;
    }
    int cnt[1000001] = {0}, n;
    int main(){
        n = readint();
        int r = 0;
        for(int s, t, i = 1; i <= n; i++){
            s = readint();
            t = readint();
            cnt[s] ++;
            cnt[t + 1] --;
            r = max_(r, t);
        }
        int sum = 0, ans = 0;
        for(int i = 1; i <= r; i++){
            sum += cnt[i];
            ans = max_(ans, sum);
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    poj3718 Facer's Chocolate Dream
    codeforces 917D Stranger Trees
    uoj#349 【WC2018】即时战略
    bzoj5153 [Wc2018]州区划分
    bzoj5152 [Wc2018]通道
    loj2001[SDOI2017]树点染色
    loj2000[SDOI2017]数字表格
    Atcoder arc092
    bzoj4826[hnoi2017]影魔
    bzoj4827 [hnoi2017]礼物
  • 原文地址:https://www.cnblogs.com/ruoruoruo/p/7506265.html
Copyright © 2011-2022 走看看