博客園同步
前記
上次 A 卷 155,B 卷 360 ;一個退役,一個進隊。
所以說很不爽,來把 A 卷的題再看一遍。
冰火戰士
上次只看了 10 分的暴力,認真了才發現答案是 2×min{ice,fire},隨便弄個數據結構二分維護就可以搞到 O(nlog2n) 的好成績,這樣 60.
2×106 的話,這個複雜度要達到 9×108,少爺機不一定 3s 能跑完吧。
那 60 分就行吧。
組合數問題
想來想去 40 還是上不去,那就怎麼地了。
魔法商店
黑啊,心裏慌。
題意看完就覺得迷迷糊糊地,算法想不起來,數據結構也套不上去。
上次部分分沒細看,這次要認真。
直接去部分分吧!
首先 15% 的 n≤10,m≤4,1≤vi≤5 瞎爆搜唄!
當然我們可以考慮的是 搜索,把 [0,10] 的狀態大力搜一遍,然後記憶化記錄答案的優劣。這樣時間複雜度應該是 1010×4 的,但是人都知道不會跑滿,穩了 15 分。
n≤50,m≤2,1≤vi≤10 就說明只有 2 個滿足的要求,那樣只要滿足 最多 4 個數其中 x xor y=0 , u xor v=0 即可,只需要修改 4 個數。
那不慌!大力枚舉 (10×2)4 可以過掉的。這樣就有了 30 分。
下面考慮 n≤50,m≤30,0≤vi≤1.
此時 若干個數異或 =0 的條件就變成了若干個數中 1 的個數和 0 的個數差爲奇數。這樣我們可以考慮把兩個條件的重複部分暴力修改,其餘部分直接統計。這樣可以有了 50 分。
A=B 說明只有一個合法條件,此時 vi 值域較大,萎掉。
所以 50 分啦!
信號傳遞
Day1 有了 150,很不慌。
既然 30 分暴力不滿足,那就來考慮狀壓。用 e 來記錄兩兩傳遞次數。(開 vector 不慌啊)
只有 2m 個狀態,滾一個 fS 來進行 dp,對 x∈S 的 x 進行更新 f.
粗略一算,哈,枚舉是 O(m) 的,轉移又要一重,那麼就是 O(2mm2).
這東西只有 60 分,常數一點也卡不進去。
空間是 O(2m) 沒事,時間不行了,那這麼地吧,60 就走了吧。
樹
Day2 全是紫題,拿到 210 仍然很慌。
直接搞一個數據結構,那麼要支持的是:
Trie 可以解決第一個和第三個,但是全局 +1 顯然 Trie 搞不了。
那麼一個二進制 +1 實際上是把 它最低位的 0 變成 1,該位以後所有的 1 變成 0,怎麼維護呢?首先 Trie 的樹高是 log 的,暴力也可以,常數小一點的話可以直接從低到高的交換。
這樣 O(nlogn) 就過了?
對,沒錯!我切紫題了?jk/ jk/
作業題
至少 310 穩住了!
反演好累啊,直接 30 暴力帶走吧。
總結
雖然口頭 340 進了 E 隊,但是很多暴力 / 正解需要調試的時間,考場真正能寫出來還需要時間的磨練。不過加油!
今番良晤,豪興不淺,他日江湖相逢,再當杯酒言歡。咱們就此別過。江湖路遠,各位請一路珍重。