欢迎光临散文网 会员登陆 & 注册

2022牛客国庆集训派对day2 K-number 题解

2022-10-02 23:57 作者:咲月未羽  | 我要投稿

方法一、

只考虑双零出现时的情况(思维)。

记前缀和对3取模为cur,cur的出现次数 cnt[cur] - 1即为cur越过3的次数。

如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即可。

方法二、

考虑动规。

记 f[k][i] 为遍历到 s[k + 1] 时,固定右端的子段和对300取模等于 i 时,对答案的贡献,则有递推式  f[k + 1][(i * 10 + s[k + 1] - '0') % 300] += f[k][i] 。

 根据题意,我们每次只要取 f[k + 1][0] 即可。


2022牛客国庆集训派对day2 K-number 题解的评论 (共 条)

分享到微博请遵守国家法律