数位DP BZOJ 1026 [SCOI2009]windy数
2016-05-17 21:48
369 查看
题目链接
前面全是0的情况特判
前面全是0的情况特判
#include <bits/stdc++.h> int dp[10][10]; int digit[10]; int DFS(int pos, int val, int zero, bool limit) { if (pos == -1) { return 1; } int &now = dp[pos][val]; if (!limit && zero && now != -1) { return now; } int d = limit ? digit[pos] : 9; int ret = 0; if (zero == 0) { for (int i=0; i<=d; ++i) { ret += DFS (pos - 1, i, i, limit && i == d); } } else { for (int i=0; i<=d; ++i) { if ((i-val) * (i - val) < 4) { continue; } ret += DFS (pos - 1, i, 1, limit && i == d); } } if (!limit && zero) { now = ret; } return ret; } int solve(int x) { int n = 0; while (x) { digit[n++] = x % 10; x /= 10; } int ret = 0; return DFS (n - 1, 0, 0, true); } int main() { memset (dp, -1, sizeof (dp)); int a, b; while (scanf ("%d%d", &a, &b) == 2) { printf ("%d\n", solve (b) - solve (a - 1)); } return 0; }
相关文章推荐
- 控制策略模型建模规范(其它)
- 用字典创建一个平台的用户信息(包含用户名和密码)管理系统
- RHEL6启动原理和故障排除
- 最长公共子序列(LCS DP)
- Swift讲解专题十三——下标访问
- Activity的生命周期全名解析(一)典型情况下的生命周期
- Golang实现快速排序
- qte安装dbus
- Linux的inode的理解 [转]
- Codeforces Round #353 (Div. 2) C. Money Transfers 数学
- caffe 学习(2)——基本原理
- 二维树状数组 BZOJ 1452 [JSOI2009]Count
- ACM解题总结——HihoCoder1299
- 控制策略模型建模规范(STATEFLOW)
- eclipse运行时报errors occurred during the build. errors running builder "android package builder" on pro
- 翻译
- Android 图片的平移、缩放、倒影、旋转实现
- Git使用
- POJ 2447 Remmarguts' Date【k短路 SPFA+A* 模板题】
- CAS客户端基本配置备忘