cojs 簡單的數字DP 題解報告

2022-05-31 06:36:12 字數 563 閱讀 3961

首先這道題真的是個數字dp

我們考慮所有的限制:

首先第六個限制和第二個限制是重複的,保留第二個限制即可

第五個限制在轉移中可以判斷,不用放在狀態裡

對於第乙個限制,我們可以增加一維表示餘數即可

對於第四個限制也是同理

對於第三個限制我們增加一維用0或1表示奇數或是偶數即可

對於第二個限制我們增加一維0/1/2/3表示匹配到第幾位即可

這樣我們算上位數一共五維做數字dp即可

如何計算平方和?

我們可以很輕鬆的求出[l,r]中滿足條件的個數記為s0

進而我們也可以很輕鬆的求出[l,r]中滿足條件的數的和記為s1

我們發現數字dp每次只轉移一位,那麼我們只需要考慮這一位的貢獻即可

當前可表示為sigma((p*10^k+x)^2)

拆完後可得表示為sigma((p*10^k)^2)+sigma(2*p*10^k*x)+sigma(x^2)

這樣我們很容易通過s0』,s1'和s2『轉移出來s0,s1,s2

最後的最後,要注意1314中有兩個1,所以在計算匹配長度的時候討論要細心一點

cojs 簡單的01串 題解報告

題意顯然是求n位二進位制串中不大於其逆序串,取反串,逆序取反串的所有串按字典序排序後的第k個 由於n很小,k很大所以我們可以考慮逐位確定 問題轉化為了求方案數,這顯然是可以用數字dp做的 設f len rev inv 表示當前字首長度為len,rev表示是否等於其逆序串,inv表示是否等於其逆序取反...

cojs 瘋狂的字串 題解報告

首先這道題是gt考試的加強版本qaq 當n當n k的時候,答案顯然是10 n 1 這樣就有20分辣 之後我們考慮k 20的做法 顯然設f i,j 表示前i位匹配到了第j位 之後用kmp來轉移就可以了 如果不用矩陣乘法優化的話時間複雜度o n k 10 如果用矩陣乘法的話時間複雜度o k 3logn ...

cojs 自己出的題目 解題報告

省選成功成為河北b隊隊長qaq 真是憂桑 所以在cojs上出了一套鬼畜的關於樹的套題 黑白樹 我們先不考慮r操作 設x是u的祖先,那麼fa x 的貢獻顯然是 fa x sz fa x sz x 之後我們對於這個求和就是答案辣 然而這一臉不可做,我們化簡一下,考慮每個sz x 的貢獻 sz x 的貢獻...