CCF CSP 小明上學 java python csp201812_1 100分

CCF CSP 小明上學 java python csp201812_1 100分

題目背景
       小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。爲了能儘可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。
       京州市的紅綠燈是這樣工作的:每盞紅綠燈有紅、黃、綠三盞燈和一個能夠顯示倒計時的顯示牌。假設紅綠燈被設定爲紅燈 r 秒,黃燈 y 秒,綠燈 g 秒,那麼從 0 時刻起,[0,r) 秒內亮紅燈,車輛不許通過;[r, r+g) 秒內亮綠燈,車輛允許通過;[r+g, r+g+y) 秒內亮黃燈,車輛不許通過,然後依次循環。倒計時的顯示牌上顯示的數字 l(l > 0)是指距離下一次信號燈變化的秒數。
問題描述
       一次上學的路上,小明記錄下了經過每段路的時間,和各個紅綠燈在小明到達路口時的顏色和倒計時秒數。希望你幫忙計算此次小明上學所用的時間。
輸入格式
  輸入的第一行包含空格分隔的三個正整數 r、y、g,表示紅綠燈的設置。這三個數均不超過 106
  輸入的第二行包含一個正整數 n(n ≤ 100),表示小明總共經過的道路段數和看到的紅綠燈數目。
  接下來的 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
樣例輸出
70
樣例說明
  小明先經過第一段道路,用時 10 秒,然後等待 5 秒的紅燈,再經過第二段道路,用時 11 秒,然後等待 2 秒的黃燈和 30 秒的紅燈,再經過第三段、第四段道路,分別用時6、3秒,然後通過綠燈,再經過最後一段道路,用時 3 秒。共計 10 + 5 + 11 + 2 + 30 + 6 + 3 + 3=70 秒。
評測用例規模與約定
  測試點 1, 2 中不存在任何信號燈。
  測試點 3, 4 中所有的信號燈在被觀察時均爲綠燈。
  測試點 5, 6 中所有的信號燈在被觀察時均爲紅燈。
  測試點 7, 8 中所有的信號燈在被觀察時均爲黃燈。
  測試點 9, 10 中將出現各種可能的情況。
問題分析
感覺這道題是非常簡單的編程入門題,完全是送分的,只要幾個簡單的if-else邏輯就可以了。
java代碼如下

import java.util.Scanner;

public class csp201812_1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int r = input.nextInt();
		int y = input.nextInt();
		int g = input.nextInt();
		int count = input.nextInt();
		int result = 0;
		int index,time;
		for(int i = 0;i < count;i++) {
			index = input.nextInt();
			time = input.nextInt();
			if(index == 0) {
				result += time; 
			}
			if(index == 1) {
				result += time;
			}
			if(index == 2) {
				result += (time + r);
			}
		}
		System.out.println(result);
		input.close();
	}

}

python3代碼如下

ryg = input().split(" ")
r = (int)(ryg[0])
y = ryg[1]
g = ryg[2]
count = (int)(input())
result = 0
for i in range(count):
    temp = input().split(" ")
    index = (int)(temp[0])
    time = (int)(temp[1])
    if index == 0:
        result += time
    elif index == 1:
        result += time
    elif index == 2:
        result += (time + r)
print(result)

       ok!大功告成了,這就是csp認證的第一題,有問題或更好的方法可以在評論區交流哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章