P4067 SDOI2016 儲能表 題解

2022-09-19 16:00:15 字數 827 閱讀 8167

給定\(n\)、\(m\)、\(k\)、\(p\),在模 \(p\) 意義下計算

\[\sum_^ \sum_^ \mathrm ((i \mathrm j)-k,0)

\]\(t\) 組測試

\(t = 5000\),\(n \leq 10 ^ \),\(m \leq 10 ^ \),\(k \leq 10 ^ \),\(p \leq 10 ^ 9\)

\(\text\)把 \(\sum \mathrm (a-k,0)\) 變為 \((\sum [a\ge k]a)-(\sum [a\ge k])\cdot k\)

我們考慮 \(\mathrm\) 的特性是位之間獨立,題目限制也只有數的大小,所以我們考慮數字 \(dp\) 。

問題等價於找到 \((i,j)\)滿足\(i \mathrm j \ge k\) 的 \((i,j)\) 對數和 \(i \mathrm j\) 的和,\(i\) 與 \(j\) 顯然要同時 \(dp\)

因為這裡統計的物件是 \(i \mathrm j\) ,且它與 \(i\) ,\(j\),分別有限制,所以我們要額外記三個資訊。

設 \(f_\) 為不考慮前 \(i\) 位的貢獻,前 \(i\) 位是否卡到 \(n-1\) 的上界、是否卡到 \(m-1\) 的上界,\(xor\) 是否卡到 \(k\) 的下界。然後分別列舉 \(i\) 與 \(j\) 在這一位填什麼,把算出低位的貢獻和個數後用個數乘上這一位的貢獻

要從貢獻在數字之間獨立看出來是數字 \(dp\)

要把 \(\text\) 轉化掉

要想到同時 \(dp\)

\(i,j,i xor j\)

4513 Sdoi2016 儲能表 數字DP

國際慣例的題面 聽說這題的正解是找什麼規律,數字dp是暴力.好的,我就寫暴力了qaq。我們令f i la lb lc 表示二進位制從高到低考慮位數為i 最低位為1 是否頂n上界,是否頂m上界,是否頂k下界的數字和,g i la lb lc 表示 同上定義 的數字個數。轉移的話,先計算出這一位n,m,...

P4071 SDOI2016 排列計數

求有多少種長度為 n 的序列 a,滿足以下條件 1 n 這 n 個數在序列中各出現了一次 若第 i 個數 a i 的值為 i,則稱 i 是穩定的。序列恰好有 m 個數是穩定的 滿足條件的序列可能很多,序列數對 109 7取模。輸入格式 第一行乙個數 t,表示有 t 組資料。接下來 t 行,每行兩個整...

P4070 SDOI2016 生成魔咒

魔咒串由許多魔咒字元組成,魔咒字元可以用數字表示。例如可以將魔咒字元 1 2 拼湊起來形成乙個魔咒串 1,2 乙個魔咒串 s 的非空字串被稱為魔咒串 s 的生成魔咒。例如 s 1,2,1 時,它的生成魔咒有 1 2 1,2 2,1 1,2,1 五種。s 1,1,1 時,它的生成魔咒有 1 1,1 1...