Team members
BiuBiuBiu
Walker
Nitrogens
To Do List
找一個表達式求值模板加到板子裏( 支持 + - × / )以及括號。
Caution
清空數組
博弈題或者數學題遇事不決上來先打表
輸出字符大小寫檢驗
題意必須完全讀懂再上去寫代碼
數組大小一定要算好
卡map的時候可以用字典樹優化
Contest
2017 JUST Programming Contest 4.0
Problems
2017 JUST Programming Contest 4.0
題號 | 題目名稱 | 題目類型 | AC/Submit | 狀態 |
---|---|---|---|---|
A | Subarrays Beauty | 簽到題 | O | |
B | Array Reconstructing | 簽到題 | O | |
C | Large Summation | 二分 | O | |
D | Counting Test | 細節題 | O | |
E | Game of Dice | 折半枚舉 | O | |
F | Strings and Queries | 線段樹 | O | |
G | Magical Indices | 簽到題 | O | |
H | Corrupted Images | 簽到題 | O | |
I | The Crazy Jumper | DP | O | |
J | The Hell Boy | 數學題 | O | |
K | Palindromes Building | 數學題 | O |
Competition process
由於圈的比賽比較水,所以簽到題比較多,開場BiuBiuBiu
發現B
這個簽到題,於是直接上去寫,在8min
過掉第一個簽到,之後去開A
題,由於最開始提議理解錯誤導致26min
才過掉,之後在34min
過掉G
題,這中間Nitrogens
向walker
說了一下D
題的做法,大家感覺都沒有問題,於是Nitrogens
上去寫,寫到中間發現過的人不多,於是繼續開題意,這時Nitrogens
發現H也是個簽到題,於是在51min
過掉H
,之後walker
向biubiubiu
說了一下C
的做法,感覺可行,在63min
過掉C
,之後Nitrogens
上去寫I
,很快寫好但是樣例過不去,然後發現是數組沒有清空,之後改掉在80min
過掉I題,之後BiuBiuBiu
發現J
題竟然是自己出過的題,然後walker
也想到了做法,於是walker
上去寫,其他人繼續開題意,之後BiuBiuBiu
得到了K
題的做法,walker在85min
過掉J,然後BiuBiuBiu上機過掉K題,之後Nitrogens
感覺D
的做法就是對的,於是上去繼續寫D
,由於忘了清空打破了8
個1A
的記錄,在119min
過掉D
題,在這之間BiuBiuBiu
得到了EF
的做法,之後BiuBiuBiu
上機寫E
,由於沒有注意細節爆ll
貢獻一發罰時,在140min
過掉E
題,還剩最後一個F
,BiuBiuBiu
想到的是線段樹的做法,寫完交上去wa2
,原因是給定數據的區間l
和r
不一定按順序,之後改掉髮現TLE
,於是把之前判定會問半徑的方法優化爲manacher
,還是TLE
,最後把map
改爲unorder_map
纔在188min
過掉,比賽就結束了!
Problems Solution
BDGH:簽到題
A - Subarrays Beauty:
可以發現只有連續的1可以做貢獻,那麼只需要把每個二進制位單獨考慮並且對每段連續的1計算貢獻即可。
C - Large Summation:
可以發現兩數相加之後取模只有兩種結果,對兩種結果分別二分去求最大值即可。
I - The Crazy Jumper:
dp[i]表示到i的最小步數,每個狀態只能從兩個之前的狀態轉移過來,注意清空數組即可。
J - The Hell Boy:
遞推的去求就會發現計算技巧,之後去按照規律計即可,注意取模。
K - Palindromes Building:
如果有超過1個字符出現奇數次,則不可能構成迴文串。
否則統計每個位置上的選擇數即可,要注意對相同的字符重複計算的問題。
E - Game of Dice
首先把14個骰子分成兩份,之後分別爆搜即可,注意算逆元的時候處理不好會爆ll。
F - Strings and Queries
問題處理一下就是區間最大值問題,之後注意被卡map而TLE的問題,優化方法有unordered_map和trie。
2017-2018 ACM-ICPC East Central North America Regional Contest (ECNA 2017)
Problems
題號 | 題目名稱 | 題目類型 | AC/Submit | 狀態 |
---|---|---|---|---|
A | Abstract Art | 計算幾何 | . | |
B | Craters | 計算幾何 | ! | |
C | DRM Messages | 模擬 | O | |
D | Game of Throwns | 模擬 | O | |
E | Is-A? Has-A? Who Knowz-A? | 傳遞閉包 | O | |
F | Keeping On Track | 樹上DP | O | |
G | A Question of Ingestion | 線性DP | O | |
H | Sheba’s Amoebas | DFS | O | |
I | Twenty Four, Again | 表達式求值+暴力 | Ø | |
J | Workout for a Dumbbell | 細節模擬 | O |
Competition process
開場發現 C 是簽到題,之後BiuBiuBiu
和 walker 開了 H 題,與此同時 Nitrogens 快速看完 C 題題意,很快碼完了,測了樣例全部通過,檢查無誤之後提交,10min1A
。H 題題意看了 20min
纔看懂,之後 BiuBiuBiu 調了很久 H 才過了樣例,然而交上去就 WA 掉了,原因是數組開小了。之後,Nitrogens 馬上開始寫 D,之後 52min1A
。此時已經發現了 H 的問題,改完之後交上去,56min2A
。之後一起開了 F 的題意,然後發現是簡單的樹上 dp,BiuBiuBiu很快碼完,最後89min1A
。之後開了 J 的題意,後來發現 J 的題意雲裏霧裏的根本看不明白,後來連看帶猜才勉強猜出題意。BiuBiuBiu放棄了這道題,後來 Nitrogens 想出了一個可能的做法,與 BiuBiuBiu 討論了一下,發現思路驚人的相似!!於是 Nitrogens 上機開始碼這道題,碼完之後樣例沒過。然後 BiuBiuBiu 和 walker 想出了 G 題的狀態轉移方程,於是BiuBiuBiu開始碼G。中間 Nitrogens 發現自己一個小細節寫錯了,找到機會上機的時候立馬把錯誤改掉,之後交上去,驚喜的發現 173min1A
。馬上 G 也寫完了,交上去發現 RE,改正之後再交,返回 WA。之後,加了很多沒用的特判,還是 WA,最後發現有一個小地方可能有問題,但是自己卻構造不出那種數據,於是莽了一發,229min5A
。這是 Nitrogens 已經將 E 的模型化簡併得到了做法,碼完之後調了好久,才過了樣例,交上去發現 WA 了。之後造了幾組數據,發現了很多 BUG,這時用 BiuBiuBiu 的簡單寫法重寫了 E,BUG 神奇的全部消失了,交上去,283min2A
。在這期間,walker 和 BiuBiuBiu 已經討論出了 I 的正確寫法,然後 walker 上機寫表達式求值,奈何時間太短,比賽結束!!!
Problems Solution
簽到題: CH
D - Game of Throwns
解題思路
對於第一種操作,直接移動相應的位置後對 取模即可(若出現負數,則將其變爲正數之後再取模),之後用棧記錄每次進行的操作。
對於第二種操作,直接從棧中取出 個元素,進行反向的第一種操作即可。注意每次取棧中元素之前,要對棧進行判空。
時間複雜度:
代碼
E - Is-A? Has-A? Who Knowz-A?
題意
給你兩種關係 is-a
和 has-a
,滿足如下性質:
is-a
滿足自反性;
傳遞性:
若 A is-a B
且 B is-a C
,則 A is-a C
;
若 A has-a B
且 B has-a C
,則 A has-a C
;
若 A has-a B
且 B is-a C
,則 A has-a C
;
若 A is-a B
且 B has-a C
,則 A has-a C
.
給定 個上述類型的關係,之後給定 個查詢,對於每一個查詢,判斷關係是否成立。
解題思路
對於 is-a
關係和 has-a
關係,按照上面的規則分別傳遞閉包即可。
時間複雜度:
代碼
F - Keeping On Track
題意
給你一棵樹,樹上恰好有一個關鍵節點,對於關鍵節點的定義爲:去掉這個點之後,不聯通的點對數最多。
現在讓你找出這個關鍵節點,刪除這個關鍵節點之後再加一條邊使不聯通的點對數最少。
解題思路
首先樹形dp統計出每個子樹內點的個數,之後對於每個點計算刪除之後的不聯通點對數並記錄下關鍵節點。
對於關鍵節點,選出兩個最大的子樹聯通即可。
時間複雜度:
代碼
G - A Question of Ingestion
題意
有一個商店,在n天中每天會推出一個食物量爲的食品,最初主人公的卡路里爲m,如果吃掉某天的食物或者吃掉某天食物的一部分,主人公的卡路里變爲之前的2/3,能吃掉食物的前提是主人公的卡路里大於要吃掉的食物量。同時,如果主人公一天不吃食物,主人公的卡路里回到上一次吃食物前的狀態,如果主人公連續兩天選擇不吃食物,則主人公的卡路里恢復爲m,問n天之後主人公能獲取的最大食物量。
解題思路
dp[i][j]表示第i輪之後能剩餘卡路里爲j的最大食物獲取量,之後按照題意進行轉移即可。
如果第i輪選擇吃/不吃東西,則從上一輪轉移過來。
對於滿卡路里的狀態,還可以從兩輪之前轉移過來。
最後要注意判斷狀態的可達行,有些狀態之前到達不了則不能轉移。
時間複雜度:
代碼
I - Twenty Four, Again
題意
給你4個數字,在他們中間添加四則運算符,交換兩個相鄰數字的代價爲2,加一組括號的代價爲1,求四個數字能湊出24的
最小代價。
解題思路
暴力枚舉所有表達式判斷可行性,可行則更新答案。
時間複雜度:
代碼
J - Workout for a Dumbbell
題意
Jim
要去健身房鍛鍊,健身房共有 個器械,對於 Jim
來說,使用第 個器械需要耗費 的時間,使用完這個器械之後,他需要 的時間進行休息。
現在 Jim
要從 號器械按順序使用到 號器械,且要進行三個回合。
每臺器械,都有一個主人,在 Jim
不使用該機器的時候,循環使用它。
對於第 個器械的主人,第一次開始使用它的時刻爲 ,每次使用耗費 的時間,使用完這個器械之後,他需要 的時間進行休息。
如果 Jim
開始使用某個器械的時間與主人這一次開始使用這個器械的時間相同的話,Jim
會讓這個器械的主人先用。
問 Jim
多長時間能完成健身(第三回合使用第 個器械後的休息時間不計)。
解題思路
按順序對三個回合進行計算,當 Jim
使用器械 時,計算當前時間 與 的差值 ,之後將 對 進行取模。
這時,我們可以方便地判斷主人使用該器械的狀態(使用 OR
休息)。
之後,按照題意進行分類討論,然後更新 和 。
最後的 減去 就是答案。
具體細節,可參考代碼,這裏不再贅述。
時間複雜度: