2018 4 7DP練習賽總結

2021-08-18 08:36:44 字數 1632 閱讀 3783

2018.4.7dp練習賽總結

最近學的東西有點多,什麼樹狀陣列、線段數、trie樹、kmp、dfs序、ac自動機,各種玄學操作瘋狂輸入,整得都沒空搞dp。今天的練習賽,說實話心裡還是有點慌的,不過還好,還算是過了4道題,雖然罰時罰出血。。。

a 免費餡餅 hdu1176

這道題一拿到直接想到fj收蘋果,然後發現資料10w,呵呵o(n^2)直接t飛。然後開始換思路,從階段劃分入手,不能用前i個餡餅來劃分,那麼就用前t秒。於是豁然開朗,dp[i][j]儲存第j秒在位置i能接到的最多餡餅數。於是很顯然的發現每個狀態都只能由前一秒的左一格、右一格或本身轉移得到。(因為速度為1)很水的一道題,然而由於一堆細節,像什麼座標為0時左一格的re,罰時了好幾次。。。

b 蛋糕cf 474d

這道題是相對水的一題了。與樓梯問題類似,我們把要吃的蛋糕數看做要走的樓梯級數,那麼我們每次能走1級或k級,直接遞推。十分順利的ac了。

c 水果cf 366c

這題讓我很頭疼,剛拿到是由於後效性問題不知道怎麼解決,連階段都沒法劃分。於是開始轉化問題,把b中每個數都乘上比值,那麼就是取數使得σai=σk*bi,然而並不好處理,出於時間考慮,我放棄了這道題。然而,後來楊神講解時只是把上述式子移了個項,就將問題轉化為01揹包(σai-k*bi),太強了。%%%%%%

d 括號染色cf 149d

這題可以考慮用遞迴來將長串劃分為小串,再一一合併的方法,然而還並沒有寫過。。。舒神,太強了。%%%%%%

e 回文串cf 245h

這題再2018福州寒假集訓時有講過,顯然是個區間dp。列舉區間長度,對於區間dp[i][j],其dp值必定是由dp[i+1][j]、dp[i][j-1]、dp[i+1][j-1]推得的,在將dp[i+1][j]與dp[i][j-1]相加時,dp[i+1][j-1]中的回文串個數被加了兩次,所以要將它減掉。(這裡用了乙個簡單的容斥原理,由於dp[i+1][j-1]滿足了兩個條件(偶數個),所以將其減掉。即σ(-1)^(k-1)*dp,k為滿足條件數)於是這題就可以愉快的ac了,真是水啊。。。然而我在前幾次提交時用了萬惡的cout,於是t了好幾次,又ji er 罰了兩次時。

f 完美子串cf 432d

這題是kmp的套路題,只要理解了next陣列的含義,就沒什麼了。

題意就是給你乙個字串,讓你輸出既是字首又是字尾的子串個數,以及每個子串的長度即出現次數。首先出現次數簡單,可以參考字串最大值,這裡不再多說。關鍵在於如何找到完美子串。首先,很顯然最長的完美子串肯定是本身,只要理解了前字尾的含義就能很快得到;其次,除本身外的最長完美子串長度肯定是next[len]的值,這也很好理解;最後,也是最關鍵的一步,原串的完美子串,肯定是最長完美子串的完美子串。即:如果a是b的最長完美子串,c是a的最長完美子串,那麼c也是b的完美子串。所以我們很容易想到對於原串的最長完美子串再做一次kmp求出乙個新的next_[len』],一直下去。但事實上,我們發現沒有必要多次求next,因為字首和字尾是一樣的,你想要求的next,與和原串的最長完美子串(除本身)相匹配的字首的next是一樣的。(比較繞)於是我們只要每次將你要查詢的標記,跳至next[len]即可,直到0為止,也就是

f=next[len];

while(f>0)

g 樹的重心調整cf 709e

h 友好城市cf 700b

兩道樹形dp,比賽時直接放了,前面都來不及寫。。。

20170531練習賽比賽總結

反思 對於資料範圍的分析不夠,沒有讀好題 比賽心態有問題 3 之前也有 發現了思路有問題卻不重新分析 我們直接二分乙個正方形包含k個點即可 用三維字首和優化演算法 include define for i,a,b for int i a i b i using namespace std const...

機房練習賽4 7 分士多啤梨 樹上DP

院子裡有一顆又高又大的士多啤梨樹,士多啤梨樹有n個節點,每個節點都結了乙個士多啤梨,吃掉第i個結點的士多啤梨可以得到ai的營養值,由於士多啤梨可能會壞掉,所以ai可能為負值,也可能為0。現在要砍掉這顆樹的兩條邊,使樹變成三份,並且使得三份各自士多啤梨營養值的和恰好一樣。請問是否有這樣的方法呢?如果有...

牛客練習賽53 A(簡單dp)

超越學姐非常喜歡自己的名字,以至於英文本母她只喜歡 c 和 y 因此超越學姐喜歡只含有 c 和 y 的字串,且字串中不能出現兩個連續的 c 請你求出有多少種長度為n的字串是超越學姐喜歡的字串。答案對1e9 7取模。輸入乙個整數n。1 n 100000輸出乙個整數表示答案。示例1 複製3複製 5cyy...