light OJ 1205 数位DP
来源:互联网 发布:图片透视软件 编辑:程序博客网 时间:2024/04/30 22:32
题意:找区间[L,R]内回文数的个数 (没有前导零)
数位dp, 自己设计一下dfs,注意零要特殊考虑, 然后枚举数的长度再dfs即可。
#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>using namespace std;#define LL long longLL l, r;int a[66];LL dp[66][66];LL dfs(int len, int l, int r, bool lim, bool ok) {//ok表示r之后的那位是否有借位,有 ok = 0 否则ok = 1 if(l < r) return !lim || (lim && ok); if(!lim && ~dp[len][l]) return dp[len][l]; LL ret = 0; int m = lim ? a[l] : 9; int i; for(i = 0; i <= m; i++) { if(l == len-1 && !i) continue; //首位为零就跳过 int g = ok; if(g) g = a[r] >= i; else g = a[r] > i; ret += dfs(len, l-1, r+1, lim&&i==m, g); } if(!lim) dp[len][l] = ret; return ret;}LL gao(LL n) { if(n < 0) return 0; if(n == 0) return 1; int len = 0; while(n) { a[len++] = n%10; n /= 10; } LL ret = 1; //要把0加进去 int i; for(i = len; i >= 1; i--) ret += dfs(i, i-1, 0, i==len, 1); return ret;}int main() { int i, cas; cin >> cas; memset(dp, -1, sizeof(dp)); for(int ca = 1; ca <= cas; ca++) { cin >> l >> r; if(l > r) swap(l, r); printf("Case %d: %lld\n", ca, gao(r) - gao(l-1)); } return 0;}
- light OJ 1205 数位DP
- Light OJ 1205-Palindromic Numbers-数位DP
- Light OJ 1205 Palindromic Numbers (数位DP)
- light oj 1032 数位DP
- light OJ 1068 数位DP
- light oj 1140 数位dp
- light oj 1068(数位dp)
- light oj 1032(数位dp)
- Light oj 1205 - Palindromic Numbers(数位dp)
- Light oj 1068 - Investigation(数位dp)
- Light OJ 1068 Investigation (数位DP)
- [light oj 1032]Fast Bit Calculations[数位DP]
- Light oj 1032 - Fast Bit Calculations(数位dp)
- Light oj 1140 - How Many Zeroes?(数位dp)
- Light OJ 1032 Fast Bit Calculations(数位DP)
- Light OJ 1105 Fi Binary Number(二分+数位DP)
- Light OJ 1122 Digit Count (简单数位DP)
- Light OJ 1140 How Many Zeroes? (数位DP)
- 虚拟内存,学习随笔
- 重写窗体关闭事件protected override void OnFormClosing(FormClosingEventArgs e)遇到的错误
- HDU 3886 数位DP
- 通过URLConnection的方式访问WebService
- HOOK的实例
- light OJ 1205 数位DP
- Visual Studio 2008中使用科学计算库GSL
- 解决 “fatal error C1902: 程序数据库管理器不匹配;请检查安装” 的方法
- android学习——各个国家语言缩写
- 内存对齐问题
- oracle实用函数
- light OJ 1068 数位DP
- fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
- How to use Git