#173: 題解


211096@stu.cchs.chc.edu.tw (唐狗針)

學校 : 彰化縣精誠中學
編號 : 872
來源 : [163.23.124.189]
最後登入時間 :
2025-03-27 10:04:09
a287. 快樂數字(HappyNumber) -- TOI練習賽2020年5月潛力組 | From: [61.223.113.58] | 發表日期 : 2025-02-27 21:39

標籤很暴雷的說了狀態壓縮,用二進位第$i$位存數字$i$是否出現過

於是可以定義出 dp 狀態:

$dp(i,s,j)$代表長度為$i$,每種數字有沒有出現過的狀態為$s$,以$j$結尾的方法數

題目說相鄰兩數差值不超過$2$,所以枚舉$dp(i-1,...,j-2 ~ j+2)$轉移

不過當前選擇數字j,之前有選$j$或沒選$j$都可以轉移到$j$已選,所以$s$的第$j$位 0/1 都要轉移

預處理建表完$O(1)$回答,答案為 dp[p][(1<<9)-1][q]

時間複雜度 $O(9\times P \times 2^9 + N)$

 

code : https://github.com/kzzz-jpg/CP/blob/main/cpp/cchs/a287.cpp

 
ZeroJudge Forum