刚学数位DP,求助
查看原帖
刚学数位DP,求助
149192
__gcd楼主2020/8/15 10:13

提醒:不是讨论区题解。

昨天做这道题,开始认为不要特意处理前导零,最后 WA on test 18.

这里是完整代码

然后把这个部分

for(int i = tot; i >= 1; i--)
{
	for(int j = 0; j < digit[i]; j++)
		ans = mod(ans + dp[i][j], MOD);
	for(int j = tot; j >= i + 1; j--)
		ans = mod(ans + mod(digit[j] * digit[i] * sum[i - 1], MOD), MOD);
}

改成了(加上处理前导零的部分)

for(int i = 1; i <= tot - 1; i++)
	for(int j = 1; j <= 9; j++)
		ans = mod(ans + dp[i][j], MOD);
for(int i = 1; i < digit[tot]; i++)
	ans = mod(ans + dp[tot][i], MOD);
for(int i = tot - 1; i >= 1; i--)
{
	for(int j = 0; j < digit[i]; j++)
		ans = mod(ans + dp[i][j], MOD);
	for(int j = tot; j >= i + 1; j--)
		ans = mod(ans + mod(digit[j] * digit[i] * sum[i - 1], MOD), MOD);
}

这份代码可以AC。

但是我还是做过一些不要处理前导零的数位DP的,比如【hdu2089】不要62

所以想问一下,哪些题目需要特殊处理前导零,哪些不要。

2020/8/15 10:13
加载中...