problem description
科學家小沃沃在研究病毒傳播的規律,從而控制疫情。有 n 個人,編號分別為 1,2,...,n。我們用螢光粉代替病毒,編號為 1 的人,在第 0 時刻塗上了螢光粉,剩下的人在第 0 時刻沒有塗。
對於第 i 個人,我們知道這個人在哪些時刻出現在了哪些地方。
如果時刻 t,某個人和身體上有螢光粉的人,出現在了同一地點,那麼從時刻 t 以後,這個人也會沾上螢光粉。
從小到大輸出實驗結束後身體上有螢光粉的人的編號。
input
第一行乙個整數 t(1≤t≤20)表示 t 組資料。對於每組資料,第一行乙個整數 n(1≤n≤20000)表示 n 個人。 對於第 i 個人,第一行輸入乙個整數 len [i] (1≤len[i]≤100)表示這個人的活動軌跡。 接下來 len[i]行,每行輸入兩個整數 t,p(1≤t≤100,1≤p≤10)表示這個人t時刻出現在了p位置,保證t按嚴格遞增的順序給出。 除了這 len[i]個時刻,這個人都呆在家裡,或者換句話說,他/她不在任何位置。 保證len[1]+len[2]+...+len[n]≤200000。
output
對於每組資料輸出一行,表示所有患者的編號。按編號從小到大輸出。
樣例輸入
242
1122
3223
3441
4412
1331
1316
1341
5161
151
樣例輸出
123
12
我的思路呢,是在輸入的時候,對資料進行乙個預處理,將某一時刻在某乙個位置的人進行分類,然後逐個時間逐個位置的去處理,如果某一時刻的某乙個位置有得病的人,則將在這個時間,在這個位置的所有人全都標記一遍。
本人比賽時的ac**:
#include
using
namespace std;
intmain()
;//記錄某一號人是否得病
vector<
int>se[
120][15
];//乙個三維陣列,來表示在某一時刻的某一位置有誰
int maxx=0;
for(
int i=
1;i<=n;i++)}
for(
int i=
1;i<=
110;i++
)break;}
}}}for
(int i=
1;i<=n;i++)}
printf
("\n");
}}
2023年百度之星程式設計大賽 初賽 1
b problem description 小度熊拿到了乙個無序的陣列,對於這個陣列,小度熊想知道是否能找到乙個k 的區間,裡面的 k 個數字排完序後是連續的。現在小度熊增加題目難度,他不想知道是否有這樣的 k 的區間,而是想知道有幾個這樣的 k 的區間。input 輸入包含一組測試資料。第一行包含...
2023年百度之星程式設計大賽初賽B
圓環 時間限制 1000ms 描述乙個圓環上有n個位置,這n個位置按順時針依次標號為1,2,n。初始時圓環的每個位置上都有乙個1至n之間的整數,且每個整數只出現一次。任何時刻,你可以將圓環上的數全部逆時針旋轉乙個位置,即第i個位置上的數變為原來第i 1個位置上的數,第n個位置上的數變為原來第1個位置...
2019 年百度之星 程式設計大賽 初賽一
傳送門 1 hdu 2 bestcoder 一步可以走乙個或者兩個,求依次進入n個區間 li,ri 的最少步數 就當前位置cur來說,1 如果下乙個任務的區間包括當前位置,那就可以不動 2 如果下乙個任務區間在當前位置左邊,那就向下乙個的左邊界移動 如果正好可以全走兩個格仔的話,就在此位置 如果不可...