题解 - P1204 [USACO1.2]挤牛奶Milking Cows

很水的一道题,但我水了一个小时。。。太弱了啊。

#include <iostream>
using namespace std;
bool ar[1000010];
int main()
{
	int n,l,r,MAXRR = 0,MINLL = 1000010;
	cin >> n;
	while(n--)
	{
		cin >> l >> r;
		MAXRR = max(MAXRR,r);
		MINLL = min(MINLL,l);
		for(int i = l; i < r; ++i)ar[i]=1;
	}
	int ans = 0, ans2 = 0, t = 0;
	//切记不可以t = 1。应为如果 t = 1,因为MINLL一定有数,且数值为1,会导致ans2被更新为1,实际上它应为0;
        //或者也可以将t赋值为1,则下面的i要从 MINLL + 1 开始。
	for(int i = MINLL; i <= MAXRR; ++i)
	{
		if(ar[i] == ar[i-1])t++;
		else{
			ar[i] == 1 ? ans2 = max(ans2,t) : ans = max(ans,t);
			t = 1;
		}
	}
//	cout << MAXRR << endl;
	cout << ans << " " << ans2;
	return 0;
 } 
上一篇:可证明安全——对称加密


下一篇:二次开发基于无线网卡的扫描