2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
A.Environment-Friendly Travel
考慮到如果沒有B的限制,我們可以直接連邊進行最短路的計算。現在有一個行駛距離不超過B的限制,注意到題目中B<=100,我們可以加一維距離限制f[i][j]表示走過距離<=i,到達j點的最小花費就行了。
D.Gnalcats
模擬。一開始判斷兩個復合DNA我用的遞歸去判定TLE了,其實直接用一個map存儲每個復合DNA的對應編號就可以了。
H.Pseudo-Random Number Generator
因為要%m,根據抽屜原理,必然是要出現重復數值,從而出現循環的。考慮到這點,我們可以先找到循環開始的點和循環節長度,打表計算答案就行了。找鏈表循環起點和循環長度可以使用Floyed's Tortoise and Hare算法。
J.Counting Trees
我們考慮先序遍歷的序列,先考慮最小值。例如2 3 1 2 3 1 1 3 2 1 2 3。我們先考慮安置1的位置,那就是卡特蘭數,4個結點的二叉樹個數。對於每種二叉樹,5個子樹的遍歷順序是唯一的,所以我們在遞歸處理剩余5個子樹{2,3},{2,3},{},{3,2},{2,3}就可以了。最后答案就是一些卡特蘭數的乘積。
L.River Game
由於題目限制,我們可以將連着濕地區域的firm ground分成若干個連通塊,而這些連通塊是獨立的游戲,符合NIM-模型。
對於每個獨立的游戲,連通塊大小m<=2n。暴力枚舉\(O(m*2^{m})\)計算sg函數值就可以了。最后通過NIM異或起來判斷。
