hdu3555 经典数位dp
来源:互联网 发布:centos编译c 编辑:程序博客网 时间:2024/06/06 17:10
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 五 4/15 23:43:25 2016 *File Name : hdu3555 .cpp *Problem:典型数位dp *Get:典型模型,坑点就是最后枚举数字的时候,前面一旦出现过了49,后面的每一位数字都要和它比它小以为的不含49的数 *组成一个含49的,这算是大体无后效性,但是有一种特殊情况的补救.***********************1599664856@qq.com**********************/#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <cmath>#include <cstdlib>#include <ctime>#include <stack>using namespace std;typedef pair<int, int> pii;typedef long long ll;typedef unsigned long long ull;vector<int> vi;#define pr(x) cout << #x << ": " << x << " " #define pl(x) cout << #x << ": " << x << endl;#define xx first#define yy second#define sa(n) scanf("%d", &(n))#define rep(i, a, n) for (int i = a; i < n; i++)#define vep(c) for(decltype((c).begin() ) it = (c).begin(); it != (c).end(); it++) const int mod = int(1e9) + 7, INF = 0x3fffffff, maxn = 1e5 + 12;int T;ll n, dp[21][3];int main(void){#ifdef LOCAL // freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout);#endif cin.sync_with_stdio(false); dp[0][0] = 1; dp[1][0] = 10, dp[1][1] = 1, dp[1][2] = 0; for (int i = 2; i <= 20; i++) { dp[i][0] = 10 * dp[i - 1][0] - dp[i - 1][1]; dp[i][1] = dp[i - 1][0]; dp[i][2] = dp[i - 1][1] + dp[i - 1][2] * 10; } cin >> T; while (T--) { cin >> n; n++; string x = to_string(n); int m = x.size(); ll ans = 0; bool flag = false; for (int j = m; j >= 1; j--) { int t = x[m - j] - '0'; ans += dp[j - 1][2] * t ; if (flag) ans += t * dp[j - 1][0]; else if (t > 4) ans += dp[j - 1][1];//注意这里有个else,是为了不要和上一条语句重复加了. if (t == 9 && j != m && x[m - j - 1] == '4') flag = true; } cout << ans << endl; } return 0;} *Get:
0 0
- hdu3555 经典数位dp
- hdu3555经典的数位dp
- HDU3555 Bomb 数位DP经典题
- 【数位DP】 hdu3555 Bomb
- 【hdu3555】【数位DP】Bomb
- 【数位DP】Bomb HDU3555
- hdu3555 Bomb 数位DP
- hdu3555数位dp
- 数位dp hdu3555
- HDU3555:Bomb(数位DP)
- hdu3555 Bomb (数位DP)
- HDU3555 Bomb 数位DP
- hdu3555 数位DP
- hdu3555(数位DP)
- Hdu3555 - Bomb - 数位dp
- hdu3555 Bomb 数位dp
- hdu3555 Bomb(数位DP)
- HDU3555 Bomb 数位DP
- iis 安装织梦DedeCMS 教程
- djiango学习笔记(一)
- vimperator 常用操作命令一览表(3分钟回顾)
- 链表题目总结
- centos7上mysql的使用
- hdu3555 经典数位dp
- 【NEFU】17-数字三角形
- HDU1195
- umedit在php中的使用及配置
- LeetCode 290. Word Pattern(单词模式)
- 关于Table View的介绍
- Android笔记【5】--PS 练习买咖啡
- mysq不输入密码也能登录的bug&授权&修改密码
- C/C++内存对齐补齐机制