USACO解析Milking Cows篇

題目翻譯網站:http://www.nocow.cn/index.php/USACO_Training

這道題的解題思想應該從這一節的主題窮舉算法上入手

顧名思義,就是判斷每一秒是否有人在擠奶。

既然是窮舉,所以就不用擔心挨個掃一遍會超時的問題。

寫到這裏都知道怎麼做了吧。

初學者一定要按着每一節的主題來思考算法,否則會走很多彎路

#include<stdio.h>
#include<string.h>
#define maxn 1000010
int x[maxn];
int main()
{
    int i,j,a=0,b=0,n,m1,m2,sum_Y=0,sum_N=0,tmp_Y=0,tmp_N=0;
    m1=maxn;
    m2=0;
    //全部清零
    memset(x,0,maxn);
    freopen("milk2.in","r",stdin);
    freopen("milk2.out","w",stdout);
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d%d",&a,&b);
        //m1,m2記錄最終的起點和終點
        if(a<m1)m1=a;
        if(b>m2)m2=b;
        //把有人擠奶的區段置1
        for(j=a;j<b;j++)
        {
            x[j]=1;
        }
    }
    //掃一遍整個數組
    for(i=m1;i<m2;i++)
    {
        if(1==x[i])
        {
            tmp_N=0;
            tmp_Y++;
            if(tmp_Y>sum_Y)
            {
                sum_Y=tmp_Y;
            }
        }
        if(0==x[i])
        {
            tmp_Y=0;
            tmp_N++;
            if(tmp_N>sum_N)
            {
                sum_N=tmp_N;
            }
        }
    }
    printf("%d %d\n",sum_Y,sum_N);
    return 0;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章