2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)相关的知识,希望对你有一定的参考价值。

LINK

题意

现在要从 0 0 0号点到 n + 1 n+1 n+1号点

i i i i + 1 i+1 i+1需要的时间是 s i s_i si

且在 i ∈ [ 1 , n ] i\\in[1,n] i[1,n]时,如果此时 i i i处的红绿灯为红灯,需要等完这次红灯才能通过

现在你从 0 0 0号点出发的时间任意,让你构造一种最优红绿灯偏移量,

使得求最坏情况下的等待时间最短


设从 0 0 0号点出发的时间为 0 0 0

那么到 1 1 1号灯的时间是 s 0 s_0 s0,我们让 1 1 1号灯的红绿灯从 s 0 s_0 s0时间开始是绿灯

然后到 2 2 2号灯的时间是 s 0 + s 1 s_0+s_1 s0+s1,我们让 2 2 2号灯的红绿灯从这个时间开始是绿灯

这样我们一次都不需要等

但是出发时间是任意的,假设在这种构造方案下,在第 i i i个位置第一次遇到红灯

那么等完这次红灯之后,时间点是第 i i i个口子绿灯刚开始的时候

那么后面其实等价于最开始的构造,畅通无阻

所以这种情况下只需要等一个红绿灯即可

由于出发时间任意,所以等的肯定是最长的红绿灯

#include <bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
int t,n,s[maxn],casenum;
int main()
{
	cin >> t;
	while( t-- )
	{
		cin >> n;
		long long ans = 0;
		for(int i=0;i<=n;i++)	cin >> s[i], ans += s[i];
		int mx = 0;
		for(int i=1;i<=n;i++)
		{
			int l,r; scanf("%d%d",&l,&r);
			mx = max( mx,r );
		}
		cout << "Case #" << ++casenum << ": " << ans+mx << endl;
	}
}

以上是关于2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)的主要内容,如果未能解决你的问题,请参考以下文章

2017-2018 ACM-ICPC Asia Tsukuba Regional Contest

2017-2018 ACM-ICPC, Asia Daejeon Regional Contest

2017-2018 ACM-ICPC Asia East Continent League Final L. SOS(博弈,思维)

(好题)2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest F Pizza Delivery

2017-2018 ACM-ICPC Asia East Continent League Final J. Straight Master(差分+思维)

2017-2018 ACM-ICPC Asia East Continent League Final C. Traffic Light(思维)