2022??蛧鴳c集訓派對day2 K-number 題解

方法一、
只考慮雙零出現(xiàn)時的情況(思維)。
記前綴和對3取模為cur,cur的出現(xiàn)次數(shù) cnt[cur] - 1即為cur越過3的次數(shù)。
如2121200 ( cur == 2 ) 有2次越過3,而121200、1200、00共貢獻3次,可記 f[cur] 為cur的貢獻。顯然有 f[cur] = cnt[cur]。
cur == 0 的情況則需要特判, 如12300,f[cur] = 2,實際上3多貢獻了一次,ans多加個1即可。
方法二、
考慮動規(guī)。
記 f[k][i] 為遍歷到 s[k + 1] 時,固定右端的子段和對300取模等于 i 時,對答案的貢獻,則有遞推式? f[k + 1][(i * 10 + s[k + 1] - '0') % 300] += f[k][i] 。
?根據(jù)題意,我們每次只要取 f[k + 1][0] 即可。
標簽: