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分的主要内容,如果未能解决你的问题,请参考以下文章