2013年9月19日

hdu3709 Balanced Number 数位DP

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709题目大意就是求给定区间内的平衡数的个数要明白一点:对于一个给定的数,假设其位数为n,那么可以有n个不同的位作为支点,但每次只能有一个支点定义dp[len][pos][k],len表示当前还需处理的位数,pos表示当前的所选的支点的位置,k表示计算到当前的力矩之和(即从最高位到第len+1位)容易知道如果在某一个len>1的位置k已经小于0,那么就可以直接剪枝代码如下 : 1 #include 2 #include 3 #include 4 #include 5 using namespa 阅读全文

posted @ 2013-09-19 21:52 GyyZyp 阅读(237) 评论(0) 推荐(0) 编辑

hdu3652 B-number 数位DP

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652题意就是求区间内能被13整除并且包含”13“的数字的个数感觉是比较中等的数位DP题目我用的记忆化的方式做的定义dp[len][mod][mark];其中len表示当前正在处理的位数或可以理解为还有len位需要处理,mod表示当前的总的余数(即从最高位到len位时所计算得到的余数)mark起标记作用mark==0表示从最高位到i位还没有出现”13“;mak==1表示从最高位到i位没有出现”13“,但第i位为1mark==2表示从最高位到i位包含”13“具体实现如下: 1 #include 2 # 阅读全文

posted @ 2013-09-19 21:39 GyyZyp 阅读(421) 评论(0) 推荐(0) 编辑

uestc 1307 windy数 数位DP

摘要: 题目链接:http://acm.uestc.edu.cn/problem.php?pid=1307windy数的含义是:不含前导零且相邻两个数字之差至少为2的正整数题目想知道在A和B之间,包括A和B,总共有多少个windy数?简单的数位DP代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int dp[15][10];//dp[i][j]表示长度为i且最高位为j的windy数的个数 7 void init() 8 { 9 memset(dp,0,sizeof(dp));10 for(in... 阅读全文

posted @ 2013-09-19 19:55 GyyZyp 阅读(212) 评论(0) 推荐(0) 编辑

hdu3555 Bomb 数位DP入门

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555简单的数位DP入门题目思路和hdu2089基本一样直接贴代码了,代码里有详细的注释代码: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 long long int dp[30][3]; 7 void init() 8 { 9 dp[0][0]=1;dp[0][1]=0;dp[0][2]=0;10 for(int i=1;i=1;i--)30 {31 a... 阅读全文

posted @ 2013-09-19 19:49 GyyZyp 阅读(172) 评论(0) 推荐(0) 编辑

hdu2089 不要62 我的第一个数位DP

摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089数位DP的入门题,我是根据kuangbin的博客写出来的思路:dp[i][0],表示长度为i,不存在不吉利数字dp[i][1],表示长度为i,不存在不吉利数字,且最高位为2dp[i][2],表示长度为i,存在不吉利数字然后一层循环即可,主要是自己要能搞懂状态之间的关系代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int dp[10][3]; 7 int bit[10]; 8 void ini 阅读全文

posted @ 2013-09-19 19:47 GyyZyp 阅读(179) 评论(0) 推荐(0) 编辑

导航