CCF 201812-2 小明放学 100分

Posted 登登登ccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF 201812-2 小明放学 100分相关的知识,希望对你有一定的参考价值。

红绿灯的顺序:黄→红→绿,黄+红+绿=一轮时间

每次循环根据亮灯剩余时间来判断当前的红绿灯处于一轮时间中的什么时间点

如果这个时间点大于黄灯+红灯的时间,则能直接通行,continue

否则用黄灯+红灯的时间-一轮中已经过去的时间,然后加到总时间上

#include <bits/stdc++.h>

using namespace std;

int main() {
	int r,y,g,n;
	long long sum=0;
	cin>>r>>y>>g>>n;
	int state[100001],time[100001];
	for(int i=0; i<n; i++) {
		cin>>state[i]>>time[i];

		if(state[i]==0)
			sum+=time[i];

		else if(state[i]==1) {
			if(((y+r-time[i]+(sum%(r+y+g)))%(r+y+g))>y+r)
				continue;
			else
				sum+=y+r-((y+r-time[i]+(sum%(r+y+g)))%(r+y+g));

		} else if(state[i]==2) {
			if(((y-time[i]+(sum%(r+y+g)))%(r+y+g))>y+r)
				continue;
			else
				sum+=y+r-((y-time[i]+(sum%(r+y+g)))%(r+y+g));
		}

		else if(state[i]==3) {
			if(((r+y+g-time[i]+(sum%(r+y+g)))%(r+y+g))>y+r)
				continue;
			else {
				sum+=y+r-((r+y+g-time[i]+(sum%(r+y+g)))%(r+y+g));
			}
		}
	}
	cout<<sum;
	return 0;
}

 

以上是关于CCF 201812-2 小明放学 100分的主要内容,如果未能解决你的问题,请参考以下文章

201812-2 小明放学

CCF2018-12-2小明终于放学了

CCF 201909-2 小明种苹果(续)100分

CCF201703-1 分蛋糕(100分)序列处理

CCF201709-1 打酱油(100分)水题

CCF201609-1 最大波动(100分)序列处理