CCF-201809-2-買菜
阿新 • • 發佈:2018-12-01
題目:
自己去官網看
思路:
計算兩個人裝車重疊的時間段。具體方法:建立一個時間段陣列,計每個時間段人出現的次數,比如小H在時刻3-時刻6裝車,就在時間段3(3-4),4(4-5),5(5-6) 加1,說明時間段3,4,5有人裝車,如果小W在4-8裝車,同理在時間段4,5,6,7 加1。最後算出時間段4,5出現了2次人,說明兩個人有相遇。(注意,要計算兩個人重合的時間,是算時間段的,不是時刻。時刻3-時刻6,有3個時間段(3-4,4-5,5-6))同理,處理剩下的時間段,最後統計時間點次數為2的有多少個。
樣例輸入
4
1 3
5 6
9 13
14 15
2 4
5 7
10 11
13 14
樣例輸出
3
圖解:
Java程式碼:
import java.util.Scanner; public class 買菜 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); int[] t = new int[1000000]; int count = 0; for (int i = 0; i < n * 2; i++) { int a = input.nextInt(); int b = input.nextInt(); for (int j = a; j < b; j++) t[j]++; } for (int i : t) if (i > 1) count++; System.out.println(count); } }
python程式碼:
bk = [0 for i in range(1000000)]
n = int(input())
count = 0
for i in range(n * 2):
a, b = [int(val) for val in input().split()]
for j in range(a, b):
bk[j] += 1
for val in bk:
if val == 2:
count += 1
print(count)
這次考證的第1,2題用不了多少時間,水題。。。。。。廣東的同學虧了。(因為颱風山竹,沒能去參加考證。)