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: 1001  Solved: 573
    [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.

    HINT

    不妨试下这个数据,对于按结束点SORT,再GREEDY的做法 1 3 5 7 6 9 10 11 8 12 4 13 正确的输出应该是3

    Source

    Silver

    /*
        序列差分水题
    */
    #include<iostream>
    #include<cstdio>
    using namespace std;
    #define maxn 1000010
    int n,mx,now,a[maxn],Range;
    int main(){
        scanf("%d",&n);
        int x,y;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&x,&y);
            if(x>y)swap(x,y);
            a[x]++;a[y+1]--;
            Range=max(Range,y);
        }
        for(int i=1;i<=Range;i++){
            now+=a[i];
            mx=max(mx,now);
        }
        cout<<mx;
    }
  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/thmyl/p/7597750.html
Copyright © 2011-2022 走看看