题目描述:详细题目,请登录官网查看-网址
第一题:思路简单,使用几个判断条件即可,见程序。
#include <iostream>
using namespace std;
int main()
{
int red, yellow,green;
cin>>red>>yellow>>green;
int n;
cin>>n;
int totalTime = 0;
int k, t;
for(int i = 0; i < n; i++) {
cin>>k>>t;
if(k == 0) {
totalTime += t;
}
else if(k == 1) {
totalTime += t;
}
else if(k == 2) {
totalTime += (t + red);
}
else {
continue;
}
}
cout <<totalTime<< endl;
return 0;
}
第二题:在第一题的基础上,使用一个变量alreadyTime
记录已经使用的时间即可。可以发现,alreadyTime
最终表示的就是放学回家需要的总时间。需要注意的是,如果把总时间声明为int
,则只能通过部分样例;声明为long long
,则可以通过全部样例。
#include <iostream>
using namespace std;
int main()
{
int red, green, yellow;
cin>>red>>yellow>>green;
int n;
cin>>n;
int k, t;
long long alreadyTime = 0;
int totalTime = red + green + yellow;
int time = 0;
for(int i = 0; i < n; i++) {
cin>>k>>t;
if(k == 0) {
alreadyTime += t;
}
else {
if(k == 1) {
time = ((red - t) + alreadyTime) % totalTime;
}
else if(k == 2) {
time = ((totalTime - t) + alreadyTime) % totalTime;
}
else {
time = ((red + green - t) + alreadyTime) % totalTime;
}
if(time >= 0 && time < red) {
alreadyTime += (red - time);
}
else if(time >= red && time < (red + green)) {
continue;
}
else {
alreadyTime += (totalTime + red - time);
}
}
}
cout <<alreadyTime<< endl;
return 0;
}