数位dp
hhhcbw
Hello World!!!
展开
-
数位dp(三)——hdu4507 吉哥系列故事——恨7不成妻
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题目大意 问区间[a,b]不和7有关数字的平方和。 如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关 1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍; 解题思路 挺难的数位dp的题,首先难点在于我们需要dp的不止是数量,还需要dp所有数的和以及平方和。定义结构体node{tot,s1,s2},tot表示数量,s1表示和,s2表示平方和。node d原创 2020-08-21 22:11:31 · 199 阅读 · 0 评论 -
数位dp(二)——hdu2089 不要62
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目大意 问区间[a,b],中满足没有4或者62的数字有多少个。 解题思路 很明显的数位dp,设定dp状态为dp[pos][tag],表示到第pos位状态是tag的有多少满足条件的(具体解释看代码注释)。然后套模板就解决了。 AC代码 #include <iostream> #include <stdio.h> #include <cstring> #include &原创 2020-08-21 15:54:46 · 265 阅读 · 0 评论 -
数位dp(四)——#10169. 「一本通 5.3 练习 4」数字计数
题目链接:https://loj.ac/problem/10169 题目大意 给定两个正整数 a 和 b,求在[a,b]中的所有整数中,每个数码 (digit) 各出现了多少次。 解题思路 数位dp,维护每个数字出现次数和数字个数。设当前状态为ans,子状态为tmp。状态转移如下。 注意有前导零时,不能把之前的零算进去,所以要特判一下。 AC代码 #include <iostream> #include <stdio.h> #include <cstring> #inc原创 2020-08-22 11:32:38 · 237 阅读 · 0 评论 -
数位dp(一)——Loj #10166. 「一本通 5.3 练习 1」数字游戏
题目链接:https://loj.ac/problem/10166 题目大意 求区间[a,b]有多少数字满足数位加和%N等于0。 解题思路 看范围,很明显的数位dp。我们设定状态dp[pos][N][i]表示在%N的情况下,到第pos位,数位加和%N是i,会有多少数字满足数位加和%N等于0。 之后就是很easy的套模板环节。 AC代码 #include <iostream> #include <stdio.h> #include <cstring> #include &l原创 2020-08-21 15:18:40 · 247 阅读 · 0 评论