USACO-Section1.2 Milking Cows

来源:互联网 发布:钢丝杨氏模量实验数据 编辑:程序博客网 时间:2024/05/16 17:05

2017-5-30

题目描述

给你几个区间,求出最长的连续长度以及最短的连续长度

解答

最长为1000000,在区间内则赋值为1,否则不操作,最后计算出结果即可,这种方法耗时比较长,注意区间的开闭问题

代码

/*ID: 18795871PROG: milk2LANG: C++*/#include<iostream>#include<fstream>#include<cstring>using namespace std;const int N = 1000000;bool f[N+1];ifstream fin("milk2.in");ofstream fout("milk2.out");void res(int a,int b){    for (int i=a;i<b;i++) f[i]=true;} int main(){    int i,n,a,b,ma=-N,mi=N;    fin>>n;    memset(f,false,sizeof(f));    for (i=0;i<n;i++){        fin>>a>>b;        ma=max(a,ma);ma=max(ma,b);        mi=min(a,mi);mi=min(mi,b);        res(a,b);    }    int res1=-N,res2=-N,sum1,sum2;i=mi;    while (i<ma){        sum1=0;sum2=0;        while (!f[i]&&i<=ma){            sum1++;i++;        }        while (f[i]&&i<=ma){            sum2++;i++;        }        res1=max(res1,sum1);        res2=max(res2,sum2);    }    fout<<res2<<" "<<res1<<endl;    return 0;}
原创粉丝点击