ccf201812-2小明放学 java代码 想求大佬解惑我代码错哪

时间限制: 1.0s
内存限制: 512.0MB
问题描述
  请帮忙计算小明此次回家所需要的时间。
输入格式
  输入的第一行包含空格分隔的三个正整数 r、y、g,表示红绿灯的设置。这三个数均不超过 106。
  输入的第二行包含一个正整数 n,表示小明总共经过的道路段数和路过的红绿灯数目。
  接下来的 n 行,每行包含空格分隔的两个整数 k、t。k=0 表示经过了一段道路,将会耗时 t 秒,此处 t 不超过 106;k=1、2、3 时,分别表示出发时刻,此处的红绿灯状态是红灯、黄灯、绿灯,且倒计时显示牌上显示的数字是 t,此处 t 分别不会超过 r、y、g。
输出格式
  输出一个数字,表示此次小明放学回家所用的时间。
样例输入
30 3 30
8
0 10
1 5
0 11
2 2
0 6
0 3
3 10
0 3
样例输出
46
样例说明
  小明先经过第一段路,用时 10 秒。第一盏红绿灯出发时是红灯,还剩 5 秒;小明到达路口时,这个红绿灯已经变为绿灯,不用等待直接通过。接下来经过第二段路,用时 11 秒。第二盏红绿灯出发时是黄灯,还剩两秒;小明到达路口时,这个红绿灯已经变为红灯,还剩 11 秒。接下来经过第三、第四段路,用时 9 秒。第三盏红绿灯出发时是绿灯,还剩 10 秒;小明到达路口时,这个红绿灯已经变为红灯,还剩两秒。接下来经过最后一段路,用时 3 秒。共计 10+11+11+9+2+3 = 46 秒。
评测用例规模与约定
  有些测试点具有特殊的性质:
  * 前 2 个测试点中不存在任何信号灯。
  测试点的输入数据规模:
  * 前 6 个测试点保证 n ≤ 103。
  * 所有测试点保证 n ≤ 105。
我的代码:
//变灯顺序为红->绿->黄依次循环
import java.util.Scanner;

public class Test201812_2 {
public static void main(String[] args) {
int r,y,g,n,k;
long time=0,t;
Scanner scan=new Scanner(System.in);
r=scan.nextInt();
y=scan.nextInt();
g=scan.nextInt();
n=scan.nextInt();
long sumLight=r+y+g;
for(int i=0;i<n;i++) {
k=scan.nextInt();
t=scan.nextInt();
if(k==0) {//道路,直接通过无需等待
time+=t;
}else if(k==1) {//出发时是红灯
if(time>t) {
long temp=(time-t)%(sumLight);
if(temp>=g) {//此时为黄灯或红灯,由于操作相同进行了合并
time+=(sumLight)-temp;
}
}else {//此时仍为红灯
time=t;//原型为time+=t-time;由此化简
}
}else if(k==2) {//出发时是黄灯
if(time==t) {//此时黄灯刚刚变为红灯
time+=r;//直接加上红灯等待时间
}else if(time>t) {
long temp=(time-t)%(sumLight);
if(temp>=r+g) {//此时仍为黄灯
time+=(sumLight)-temp;
}else if(temp<r) {//此时为红灯
time+=r-temp;
}
}else {//此时仍为黄灯
time=t+r;//由time+=t-time+r化简,即加上还需等待黄灯时间和红灯等待时间
}
}else if(k==3) {//出发时为绿灯
if(time==t) {//此时刚从绿变黄
time+=r+y;
}else if(time>t) {
long temp=(time-t)%(sumLight);
if(temp<y+r) {//此时为红灯或黄灯,因操作相同合并
time+=y+r-temp;
}
}
}else {//非法k输入
System.out.println("illegal k!");
}
}
System.out.println(time);
}
}
//上述测试用例结果正确,ccf评分20,实在想不出来哪错了,求大佬解惑!!!orz

第1个回答  2019-05-13
你地址你自己找你在哪的你试试你电话这是你你不睡觉自己的随便你
第2个回答  2019-03-07
这个不是要用C语言写吗?追问

c c++ java python都可以,看你选什么了

第3个回答  2019-03-07
呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜无语
相似回答