码迷,mamicode.com
首页 > 其他好文 > 详细

Section 1.2.2 Milking Cows

时间:2015-07-08 22:29:46      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

= =之前跟队友兴致勃勃说要一起刷usaco,然后就卡在这题了,因为真没看懂。

今天莫名想起,感觉是左闭右开区间,然后一试就过了= = 然后又可以愉快开刷了

//然而队友已经不是原来的队友了

//人和人的价值观差别太大

//我觉得玩的开心就好+信守承诺最重要

//他觉得要当一队拿金然后进final最重要

//另一个迷之乱入的觉得和他妹子打+不离开原队友最重要,好吧 = =

//另外一个人迷之乱入的我也不知道他觉得什么重要,然而我信守对他承诺,以至于抛弃了队友(抱歉),然而他却背弃了呵呵呵,和学霸组队真是太危险辣,世界观我永远不懂

//反正闹得N头不是人,都怪我咯。。。

//好烦躁,还是刷题吧

 

我用的是不知道叫什么名字法,两端标记然后扫两遍,复杂度就是时间的长度

另外一种方法是记录所有的区间后排序然后乱搞

技术分享
#include <bits/stdc++.h>
using namespace std;
const int N = 1000005;
int d[N];
int main()
{
    #ifndef poi
        freopen("milk2.in","r",stdin);
        freopen("milk2.out","w",stdout);
    #endif

    int n, i, x, y, temp, minn = 0x3f3f3f3f, maxn = 0;
    memset(d, 0, sizeof(d));
    scanf("%d", &n);
    while(n--){
        scanf("%d %d",&x, &y);
        d[x] ++;    d[y] --;    //[x, y)
        minn = min(minn, x);
        maxn = max(maxn, y);
    }

    for(i = minn; i <=1+ maxn; i++){
        d[i] += d[i-1];
      //  printf("%d %d\n", i, d[i]);
    }

    int ans1 = 0, ans2 = 0;
    for(i = minn; i <= maxn; ){
        temp = i;
      //  printf("%d\n", i);
        while(d[i]&&i <= maxn+1) {
            i ++;
        }
     //   printf("ans1 : %d %d\n", i, i-temp-1);
        ans1 = max(i-temp, ans1);
        temp = i;
        while(!d[i]&& i <= maxn+1){
            i ++;
        }
       //  printf("ans2 : %d %d\n", i, temp);
        ans2 = max(min(i,maxn)-temp, ans2);
    }

    printf("%d %d\n", ans1, ans2);
    return 0;
}
View Code

 

Section 1.2.2 Milking Cows

标签:

原文地址:http://www.cnblogs.com/bbbbbq/p/4631394.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!