数位DP入门 + 待补上最后一题
来源:互联网 发布:什么软件可以套花呗 编辑:程序博客网 时间:2024/06/13 22:54
学了一下数位DP后才会做范老师的题目。
HDU2689不要62
模板题 , dfs写法,大概理解数位dp的思想以及简洁的写法。limit:是否受限,zero:是否一直在前导零。数位dp的精髓在于记忆化搜索。
#include<bits/stdc++.h>using namespace std;const int N = 10000;int dp[N][2] , l , r , ans , a[N] , cnt;int dfs(int pos ,int six , int limit) { if(!pos) return 1; if(!limit && dp[pos][six] != -1) return dp[pos][six]; int up = limit ? a[pos] : 9; int res = 0; for(int i = 0;i <= up;i ++) { if(i == 4) continue; if(six && i == 2) continue; res += dfs(pos - 1, i == 6, a[pos] == i && limit); } if(!limit) dp[pos][six] = res; return res;}int solve(int x) { cnt = 0; while(x) { a[++ cnt] = x % 10; x /= 10; } return dfs(cnt , 0 , 1);}int main() { memset(dp,-1,sizeof(dp)); while(scanf("%d%d",&l,&r) == 2 && l + r) { printf("%d\n",solve(r) - solve(l - 1)); }}
BZOJ1026 Windy数
考虑前导零和limit细节不多,模版思路跟着走即可。
#include<bits/stdc++.h>using namespace std;const int N = 35;int dp[N][15] , n , m , l , r , cnt , a[N];int dfs(int pos ,int limit , int lead, int sta) { if(!pos) return 1; if(!limit && !lead && dp[pos][sta] != -1) return dp[pos][sta]; int up = limit ? a[pos] : 9; int res = 0; for(int i = 0;i <= up;i ++) { if(abs(i - sta) <= 1) continue; res += dfs(pos - 1 , a[pos] == i && limit , lead && (!i),(lead && (!i)) ? -100 : i); } if(!limit && !lead) dp[pos][sta] = res; return res; } int solve(int x) { cnt = 0; while(x) { a[++ cnt] = x % 10; x /= 10; } return dfs(cnt , 1 , 1 , -100);}int main() { memset(dp,-1,sizeof(dp)); scanf("%d%d",&l,&r); printf("%d\n",solve(r) - solve(l - 1));}
最后就是一道比较神的数位DP,范老师的T3
阅读全文
0 0
- 数位DP入门 + 待补上最后一题
- 数位DP入门题
- hdu3555 数位dp入门题
- HDU2089 数位DP入门题
- hdu3555Bomb【数位dp入门题】
- HDU3555Bomb数位DP入门题
- 补上一题
- hdu 2089 数位dp入门题
- hdu 3555数位dp基础入门题
- hdu2089(数位dp入门题)
- hdu3555(数位dp入门题)
- hdu 3555数位DP 入门题
- hdu3555+cf55D 数位dp入门题
- HDU 2089 数位DP 入门题
- HDU 2089 数位DP入门题
- hdu2089 不要62--数位dp入门题
- 【HDU3555】Bomb-数位DP入门题
- 【数位DP】模板+入门题HDU2089 FZU2109
- MyISAM和InnoDB的区别
- [C++] boost::less_than_comparable
- 当面试官问我们vector扩容机制时,他想问什么?
- MyEclipse如何编写JUnit测试类
- 整除的尾数
- 数位DP入门 + 待补上最后一题
- [C++] ACE书籍推荐
- 又学一招!二维向量vector<vector<int>>在VC下的使用技巧。
- Codevs 1169 传纸条
- ZooKeeper_1_分布式
- [C++] VS中出现未将对象引用设置到对象的实例
- HDOJ 连连看 (DFS (TLE))
- Swift中值类型和引用类型
- 奇货商城重构——webpack自动化工程