文章分类 -  acm动态规划-数位dp

CodeForces 258B Little Elephant and Elections :于1-m中找出七个数,使六个数里面的4和7个数比第七个数严格小:数位dp+dfs
摘要:预处理sum数组,sum[i]表示1-m中有i个4或7的数有多少个,这个数位dp很好写然后就是枚举第七个数含有的4,7数目,dfs剩下的六个数= 1 #include 2 #include 3 #include 4 using namespace std; 5 #define LL long lon... 阅读全文

posted @ 2015-03-25 22:05 xiao_xin 阅读(191) 评论(0) 推荐(0)

CodeForces 507D 数位dp(n位的数满足该数的一个后缀是k的倍数有多少个)
摘要:灵活!首先,需要从后向前dfs,因为后缀。然后,不用再加limit了,但是在特殊的位置要知道该位加的是0还是1。这样的话,记住后缀mod k的值,就很好dfs了。dfs(pod,preMOD,flag) 1 #include 2 #include 3 int dp[1005][105][2],shi... 阅读全文

posted @ 2015-01-24 04:53 xiao_xin 阅读(419) 评论(0) 推荐(0)

hdu4507 数位dp~last(求一个区间内所有与7无关数的平方和)
摘要:因为这道题目开始学的数位dp,在bestcode那道数位dp(http://www.cnblogs.com/xiao-xin/articles/4168112.html)解决之后,这道题目也终于解决啦!求一个区间内满足:1.每位都没有7 2.该数每位和不是7倍数 3.该数不是7倍数,这样的数的平方和... 阅读全文

posted @ 2014-12-20 09:31 xiao_xin 阅读(252) 评论(0) 推荐(0)

hdu5106 小于x的数(二进制1确定的数)的和 数位dp(first mine)
摘要:学过数位dp,第一次用那个模板用自己的思路敲出来的dfs代码2333还尼玛用了结构体瞬间觉得高大上逼格升升升===吃颗药冷静一下,结构体返回的是:1.pos及其下面的符合已定sum的数目2.pos及其下面的符合已定sum的数的和然后开两个数组保存一下记忆化: 1 #include 2 #includ... 阅读全文

posted @ 2014-12-16 21:35 xiao_xin 阅读(225) 评论(0) 推荐(0)

hdu3709 数位dp六(左权重等于右权重的数)
摘要:和五类似,此题枚举的是平衡位置,然后依旧数位dp只要从头dfs到尾权重为0即符合。注意0每一次都被重复计算了。 1 #include 2 #include 3 long long dp[20][1800][20]; 4 int num[20]; 5 long long dfs(int pos,int... 阅读全文

posted @ 2014-11-28 22:51 xiao_xin 阅读(174) 评论(0) 推荐(0)

hdu4389 数位dp五(能被各位数之和整除)
摘要:所有位和最大为81,枚举x为1-81即和为x且该数能被x整除。。卡内存过=== 1 #include 2 #include 3 int num[15]; 4 int dp[11][82][82][82]; 5 int dfs(int pos,int sum,int lsum,int mod,int ... 阅读全文

posted @ 2014-11-28 19:32 xiao_xin 阅读(220) 评论(0) 推荐(0)

hdu3652数位dp四 (数是13的倍数且包含13)
摘要:相比第一个数位dp,多加了一维mod,来判定前面值对13的取模,知道最后返回结果要两个都成立。 1 #include 2 #include 3 int num[15]; 4 int dp[15][15][15][2]; 5 int dfs(int pos,int pre,int mod,int ha... 阅读全文

posted @ 2014-11-28 01:44 xiao_xin 阅读(230) 评论(0) 推荐(0)

CodeForces 55D 数位dp三(某数能被它每位数整除)
摘要:dfs(pos,sum,nlcm,flag)pos表示到第几位;sum表示前几位表示的数,因为太大可以mod所有数的最小公倍数2520;nlcm表示前几位的最小公倍数,最大只有2520,但还是太多需要离散化;flag表示有没有上限。dp[pos][sum][nlcm]; 1 #include 2 #... 阅读全文

posted @ 2014-11-27 23:15 xiao_xin 阅读(303) 评论(0) 推荐(0)

hdu2089 数位dp二(不含62或者4)
摘要:递推的写法,进一步理解了数位dp,为了防重复计算总是比当前上限小的。 1 #include 2 #include 3 int dp[10][5],num[10]; 4 int cal(int x) 5 { 6 int tmp=x,i,cnt,ans,flag; 7 memset(nu... 阅读全文

posted @ 2014-11-27 18:48 xiao_xin 阅读(123) 评论(0) 推荐(0)

hdu3555 数位dp一:不含49的数
摘要:首先递推公式:dp[i][0] = dp[i-1][0] * 10 - dp[i-1][1];// 不含49dp[i][1] = dp[i-1][0];// 不含49以9开头dp[i][2] = dp[i-1][2] * 10 + dp[i-1][1];// 含49然后从高位往低位递推,ans+=d... 阅读全文

posted @ 2014-11-27 16:23 xiao_xin 阅读(125) 评论(0) 推荐(0)

导航