2020 ICPC, Indonesia Multi-Provincial Contest
和神仙 jzp,thecold 打力一場比賽,被帶着拿到了 38 名,下面寫下簡要題解
A. Arena of Greed
一堆金幣,兩個人輪流拿
- 當前金幣個數是奇數,只能拿一顆
- 當前金幣個數是偶數,可以拿一半或一顆
兩個人最優化操作,求先手獲得金幣個數最多是多少
思考一下,如果當前是奇數沒得選,不再討論,偶數就有可能選一半或一個。
如果選一半以后變成偶數,那么我就選一個,因為選一半代表着對方能拿走至少剩下石子的一半,而事實上我可以讓它更少,選一個以后對方只能選一個,這時候再選主動權就還在自己手里,對方永遠不會拿到石子的一半。
注意當 n 等於 4 的時候要特判
B. Blue and Red of Our Faculty!
給個花朵🌼一樣的圖,即中心節點是 1 號點,剩下是一些環,這些環互不相交,它們都掛在 1 號節點上。
兩個人從 1 號點開始走,每秒同時走一條邊,走過一條邊就打上標記表示不可以再次經過,直到兩人無路可走。
問方案數,兩個方案不同當且僅當兩種方案兩人的路徑集合不一樣。
這題很好想到,就是有些細節,容易發現兩人肯定在一個花瓣上相遇動彈不得,剩下的花瓣只能整片走過,所以我們枚舉它們相遇的位置,剩下的部分背包即可,背包時直接記錄兩者路徑長度之差,最后要特判在 1 號點相遇和在和 1 號點相鄰的邊處相遇的方案數。
C. Captain of Knights
暫時不會
D. Danger of Mad Snakes
所有數據都是 \(1000\) 級別的,給個地圖,上面有些龍,龍有價值 \(b_i\),你選中 m 條龍,如果一條龍切比雪夫距離 d 內有選中龍,那么它對此方案有 $b_i $的貢獻,一次選中方案的價值是所有龍貢獻和的平方。
總價值和為
所以我們考慮兩條龍都被選中的方案數,這個方案就是 (總方案數 - A 龍未被選中的方案數 - B 龍未被選中的方案數 + A,B 均未被選中的方案數)
利用二維前綴和就可以輕松求出了。
E. Excitation of Atoms
不想放題面了,大細節題。
容易發現 k 較大的沒有用,直接來回變把次數浪費掉即可
分類討論即可,對於 \(k = 0\),直接枚舉要激活哪個即可
對於 \(k \ge 2\),就是拿價值的總和減去前 \(n-1\) 個中最小的代價即可。可以讓最小的代價所在的點 x 指向 1 號點,讓 x - 1 指向 x + 1 ,這樣就有一條 \(x \to 1 \to x-1\to x+1\to n\) 的覆蓋所有點的路徑了,顯然最優。
對於 \(k = 1\),細節較多
- 讓 1 號點隨便指,剩下的當 \(k=0\) 做
- 選一個前綴 \(1 \to i\),讓 i 指向 1,激活 1 到 i 最小值的位置,這樣就把 \(1 \to i\) 全部消掉了,然后后綴選個最大值即可。
- 如果 1 號點激活代價小,價值大,我們就不好舍棄它,激活一個點付出的代價太大,我們就不會激活第二個點,所以如果選 1 號點,那么除了第二種情況,也可以在中間跳一個價值小的點去
這樣就可以通過此題了。確實不易思考全面。
F. Flamingoes of Mystery
太水不說
H. Huge Boxes of Animal Toys
太水不說
I. Impressive Harvesting of The Orchard
看了看別人的 ac 代碼,清一色的全是暴力 \(\Theta(n^2)\),本機造了個極限數據,有個程序只跑了 \(2.93s\),這個故事告訴我們,暴力 yyds,考場白給了一道題/(ㄒoㄒ)/~~