d. ticket game
description
給定乙個長度為\(n\)的數字串(\(n\)為偶數),其中有一些位置的值被刪除了用\(?\)表示,有兩個人要在這個上面玩乙個遊戲。這兩個人會輪流把串中的問號替換成乙個數字\(\in [0, 9]\),如果最後前一半所有數字的和等於後一半所有數字的和,那麼後手贏,否則先手贏。現在給定這個帶\(?\)的數字串,你需要求出誰最後會贏
\(2 \leq n \leq 2 \times 10^5\)
solution
我們可以先考慮只有一邊有\(?\)的情況,設\(?\)的數量為\(c\)(\(c\)為偶數),有\(?\)的那邊比另一邊的權值和少\(d\),
現在我們再考慮一下兩邊都有括號的情況,我們假設左邊的\(?\)較多,左邊的權值和比右邊的少\(d\),括號數量的差為\(c\)
所以我們就只需要知道\(c, d\),就可以確定勝負了
e. marbles
description
給定乙個長度為\(n\)的數列\(a_i\),你可以花費\(1\)的代價交換相鄰的兩個元素。現在你要使得每種權值的下標連續,問最小需要多少花費
\(2 \leq n \leq 4 \times 10^5, 1 \leq a_i \leq 20\)
solution
我們可以先處理出任意一種權值考慮對於任意乙個其它權值的集合,如果要把所有這種權值的數都移到最左邊需要的代價。然後我們就可以設\(dp[s]\)表示把\(s\)集合中的權值都處理完後(移動到最左邊)所需要的最少代價,然後我們就每次列舉一種沒有處理的權值轉移就可以了
code
f. radio stations
description
有\(p\)個訊號站,每乙個訊號站只有在總站發出的功率在\([l_i, r_i]\)時才能正常工作,現在有\(n\)個形如\(x_i\)號訊號站和\(y_i\)至少要有乙個正常工作的限制,有\(m\)個形如\(x_i\)號訊號站和\(y_i\)不能同時正常工作的限制
總站能發出的功率\(f\)的範圍是\(\in [1, m]\),你現在需要確定總站發出的功率以及哪些訊號站工作,使其滿足給定的所有限制
\(2 \leq n, p, m, m \leq 4 \times 10^5\)
solution
我們可以發現如果沒有功率的限制,那就是一道\(2-sat\)的模板題,現在我們考慮怎麼解決功率的限制
我們可以考慮對於每一種功率都建一種變數,第\(i\)個點表示\(f \geq i\),其逆否命題表示\(f < i\)。我們對於\(f \geq i\)向\(f \geq i - 1\)連邊,因為如果\(f\)滿足前者,顯然就會滿足後者。同理,我們對於\(f < i\)向\(f < i + 1\)連邊。然後我們可以把訊號站對於功率的限制轉化為下面兩個限制:\(f \geq l_i\)和不選\(i\)至少有乙個成立,\(f < r_i + 1\)和不選\(i\)至少有\(1\)個成立。然後就直接跑\(2-sat\),隨便跑出一組解就可以了
code
summary
這場也只能算是打得一般,\(e\)題就是一道思博題,還想了半個多小時...
以後打的時候一定要注意做題速度,因為\(div2\)有很多手速場。比如說這場,從第\(4\)名到差不多\(200\)名都是\(a\)了\(5\)題,就是看誰的手速快
KMP做題記錄
題目太長不貼了 這道題很巧妙,給定乙個字串s,求最少在首尾新增幾個字元後,s變為乙個迴圈了n次的字串 n 1 假設我們有乙個迴圈串s abcabcabc 我們根據kmp求一次next陣列,就可以通過next strlen s 得到乙個迴圈節的位置從而求出迴圈節的長度,顯然,迴圈節能被s整除。如果s ...
8 25 9 25 做題記錄
2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...
8 25 9 25 做題記錄
2018.8.25 上午 1.ac 洛谷p1514引水入城 搜尋 貪心 2.ac 洛谷p3918 國家集訓隊 特技飛行 貪心 下午 3.ac 洛谷p1120 小木棍 資料加強版 搜尋 剪枝 4.ac 洛谷p1441 砝碼稱重 dfs列舉 01揹包 2018.8.26 上午 參加模擬賽 下午 1.ac...