【Team 馬上就要把樓上超過了 訓練記錄】

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 簽到題 42/5042/50 O
B Array Reconstructing 簽到題 69/9069/90 O
C Large Summation 二分 35/4735/47 O
D Counting Test 細節題 34/4234/42 O
E Game of Dice 折半枚舉 22/2622/26 O
F Strings and Queries 線段樹 12/2312/23 O
G Magical Indices 簽到題 65/7665/76 O
H Corrupted Images 簽到題 58/6158/61 O
I The Crazy Jumper DP 50/5550/55 O
J The Hell Boy 數學題 44/4944/49 O
K Palindromes Building 數學題 55/6255/62 O

Competition process

由於圈的比賽比較水,所以簽到題比較多,開場BiuBiuBiu發現B這個簽到題,於是直接上去寫,在8min過掉第一個簽到,之後去開A題,由於最開始提議理解錯誤導致26min才過掉,之後在34min過掉G題,這中間Nitrogenswalker說了一下D題的做法,大家感覺都沒有問題,於是Nitrogens上去寫,寫到中間發現過的人不多,於是繼續開題意,這時Nitrogens發現H也是個簽到題,於是在51min過掉H,之後walkerbiubiubiu說了一下C的做法,感覺可行,在63min過掉C,之後Nitrogens上去寫I,很快寫好但是樣例過不去,然後發現是數組沒有清空,之後改掉在80min過掉I題,之後BiuBiuBiu發現J題竟然是自己出過的題,然後walker也想到了做法,於是walker上去寫,其他人繼續開題意,之後BiuBiuBiu得到了K題的做法,walker在85min過掉J,然後BiuBiuBiu上機過掉K題,之後Nitrogens感覺D的做法就是對的,於是上去繼續寫D,由於忘了清空打破了81A的記錄,在119min過掉D題,在這之間BiuBiuBiu得到了EF的做法,之後BiuBiuBiu上機寫E,由於沒有注意細節爆ll貢獻一發罰時,在140min過掉E題,還剩最後一個FBiuBiuBiu想到的是線段樹的做法,寫完交上去wa2,原因是給定數據的區間lr不一定按順序,之後改掉髮現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 計算幾何 0/60/6 .
B Craters 計算幾何 3/93/9 !
C DRM Messages 模擬 130/135130/135 O
D Game of Throwns 模擬 120/136120/136 O
E Is-A? Has-A? Who Knowz-A? 傳遞閉包 15/6415/64 O
F Keeping On Track 樹上DP 25/3525/35 O
G A Question of Ingestion 線性DP 28/7128/71 O
H Sheba’s Amoebas DFS 94/10794/107 O
I Twenty Four, Again 表達式求值+暴力 9/129/12 Ø
J Workout for a Dumbbell 細節模擬 30/5330/53 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

解題思路

對於第一種操作,直接移動相應的位置後對 nn 取模即可(若出現負數,則將其變爲正數之後再取模),之後用記錄每次進行的操作。

對於第二種操作,直接從棧中取出 mm 個元素,進行反向的第一種操作即可。注意每次取棧中元素之前,要對棧進行判空

時間複雜度:O(n)O(n)

代碼

https://pasteme.cn/5471


E - Is-A? Has-A? Who Knowz-A?

題意

給你兩種關係 is-ahas-a,滿足如下性質:

(1)(1) is-a 滿足自反性;

(2)(2) 傳遞性

A is-a BB is-a C,則 A is-a C

A has-a BB has-a C,則 A has-a C

A has-a BB is-a C,則 A has-a C

A is-a BB has-a C,則 A has-a C.

給定 nn 個上述類型的關係,之後給定 mm 個查詢,對於每一個查詢,判斷關係是否成立

解題思路

對於 is-a 關係和 has-a 關係,按照上面的規則分別傳遞閉包即可。

時間複雜度:O(n3)O(n^3)

代碼

https://pasteme.cn/5472


F - Keeping On Track

題意

給你一棵樹,樹上恰好有一個關鍵節點,對於關鍵節點的定義爲:去掉這個點之後,不聯通的點對數最多。
現在讓你找出這個關鍵節點,刪除這個關鍵節點之後再加一條邊使不聯通的點對數最少。

解題思路

首先樹形dp統計出每個子樹內點的個數,之後對於每個點計算刪除之後的不聯通點對數並記錄下關鍵節點。
對於關鍵節點,選出兩個最大的子樹聯通即可。

時間複雜度:O(n)O(n)

代碼

https://pasteme.cn/5473


G - A Question of Ingestion

題意

有一個商店,在n天中每天會推出一個食物量爲cic_i的食品,最初主人公的卡路里爲m,如果吃掉某天的食物或者吃掉某天食物的一部分,主人公的卡路里變爲之前的2/3,能吃掉食物的前提是主人公的卡路里大於要吃掉的食物量。同時,如果主人公一天不吃食物,主人公的卡路里回到上一次吃食物前的狀態,如果主人公連續兩天選擇不吃食物,則主人公的卡路里恢復爲m,問n天之後主人公能獲取的最大食物量。

解題思路

dp[i][j]表示第i輪之後能剩餘卡路里爲j的最大食物獲取量,之後按照題意進行轉移即可。
如果第i輪選擇吃/不吃東西,則從上一輪轉移過來。
對於滿卡路里的狀態,還可以從兩輪之前轉移過來。
最後要注意判斷狀態的可達行,有些狀態之前到達不了則不能轉移。

時間複雜度:O(nm)O(nm)

代碼

https://pasteme.cn/5473


I - Twenty Four, Again

題意

給你4個數字,在他們中間添加四則運算符,交換兩個相鄰數字的代價爲2,加一組括號的代價爲1,求四個數字能湊出24的
最小代價。

解題思路

暴力枚舉所有表達式判斷可行性,可行則更新答案。

時間複雜度:O(4×4×4×4×5×43)O(4!×4×4×4×5×4^3)

代碼

https://pasteme.cn/5474


J - Workout for a Dumbbell

題意

Jim 要去健身房鍛鍊,健身房共有 1010 個器械,對於 Jim 來說,使用第 ii 個器械需要耗費 tit_i 的時間,使用完這個器械之後,他需要 rir_i 的時間進行休息

現在 Jim 要從 11 號器械按順序使用到 1010 號器械,且要進行三個回合

每臺器械,都有一個主人,在 Jim 不使用該機器的時候,循環使用它。

對於第 ii 個器械的主人,第一次開始使用它的時刻爲 SiS_i,每次使用耗費 TiT_i 的時間,使用完這個器械之後,他需要 RiR_i 的時間進行休息

如果 Jim 開始使用某個器械的時間與主人這一次開始使用這個器械的時間相同的話,Jim讓這個器械的主人先用

Jim 多長時間能完成健身(第三回合使用第 1010 個器械後的休息時間不計)。

解題思路

按順序三個回合進行計算,當 Jim 使用器械 ii 時,計算當前時間 tt SiS_i差值 deltadelta,之後將 deltadeltaTi+RiT_i+R_i 進行取模

這時,我們可以方便地判斷主人使用該器械的狀態(使用 OR 休息)。

之後,按照題意進行分類討論,然後更新 SiS_itt

最後的 tt 減去 r10r_{10} 就是答案

具體細節,可參考代碼,這裏不再贅述。

時間複雜度:O(310)O(3 \cdot 10)

代碼

https://pasteme.cn/5475

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