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

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

    Time Limit: 10 Sec  Memory Limit: 64 MB
    Submit: 987  Solved: 566
    [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

    Analysis

    求区间叠加最大数,经典的差分老题

    然而第一次提交的时候因为是扫描 1-n 不知道为什么被卡了

    后来改成了 1-最远区间右端点 就过了

    很迷

    Code

     1 #include<cstdio>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 int r,cnt[10000000],ret,cncct,a,b,n;
     6 
     7 int main(){
     8     scanf("%d",&n);
     9     
    10     for(int i = 1;i <= n;i++){
    11         scanf("%d %d",&a,&b);
    12         cnt[a]++,cnt[b+1]--;
    13         r = max(r,b);
    14     }
    15     
    16     int cncct = 0,ret = 0;
    17     for(int i = 1;i <= r;i++){
    18         cncct += cnt[i];
    19         ret = max(ret,cncct);
    20     }
    21     
    22     printf("%d",ret);
    23     
    24     return 0;
    25 }
    84 ms 的差分
    转载请注明出处 -- 如有意见欢迎评论
  • 相关阅读:
    spring原理
    mybatis原理
    数据结构与算法
    JVM内存模型及垃圾回收算法
    dorado动态修改数据验证
    dorado在dialog中使用js通过控件id修改控件值,值闪烁一下消失问题
    由于;引发的Oracle的BadSqlExecption
    swagger配置
    SpringBoot整合mybatis碰到的问题
    关于浏览器的自动缓存问题
  • 原文地址:https://www.cnblogs.com/Chorolop/p/7500575.html
Copyright © 2011-2022 走看看