数位dp
文章平均质量分 58
wintowanti
享受生活 享受学习
展开
-
数位dp 入门 nbut 1475
nbut 1475 用dp[i][j][k] 表示滴i位时取j是已经有k个1 这样状态就很容易表示了 if(j==1) dp[i][j][k]=dp[i][0-9][k-1]; else dp[i][j][k]=dp[i][0-9][k]; 统计的时候注意前面有个几个1;小心最大整数 #include #include #include #define M 12 #define ll原创 2013-09-12 10:56:57 · 915 阅读 · 0 评论 -
hdu 2089 不要62
基础数位dp 用dp[i][j] 表示滴i个数时以j结尾所应该统计的个数 明显每次递推的时候特殊考虑 4 和 6 2 但是在统计的时候需要注意前面是否有4 和62 来防止计算了。第一个数位#include #include #define M 10 int dp[M][M]; using namespace std; void init(){ dp[0][0]=1; for(in原创 2013-09-12 10:46:57 · 1049 阅读 · 0 评论 -
hdu 4722 good number 数位dp入门
明显dp[i][j][k] 表示i为取j的时候余数为k的个数 然后dp方程就显然可得了,我看其他人都是2位,少了j这个位,但是我认为有这位比较清楚啊,贴上代码 #include #include #define M 25 #define ll __int64 ll dp[M][10][10]; void init(){ memset(dp,0,sizeof(dp)); dp[0]原创 2013-09-12 18:00:09 · 1081 阅读 · 0 评论 -
hdu 4734 数位dp
刚好近来学了数位dp刚好用上了,nice 用dp[i][j][k] 表示第i位用j时f(x)=k的时候的个数,然后需要预处理下,然后就很容易想了 dp[i+1][j][k+(1 #include #include #define M 7000 int dp[12][12][M]; int tsum[12][12][M]; void init(){ memset(dp,0,sizeof原创 2013-09-14 17:52:22 · 1312 阅读 · 0 评论