博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu3555
阅读量:6817 次
发布时间:2019-06-26

本文共 1352 字,大约阅读时间需要 4 分钟。

基本的数位dp

#include 
#include
using namespace std;#define D(x) xconst int MAX_DIGIT = 66;long long n;int f[MAX_DIGIT];long long memoize[MAX_DIGIT][2][2][2];void to_digits(long long a){ for (int i = 0; i < MAX_DIGIT; i++) { f[i] = a % 10; a /= 10; }}long long dfs(int digit, bool less, bool contain, bool four){ if (digit == -1) { return contain; } if (memoize[digit][less][contain][four] != -1) { return memoize[digit][less][contain][four]; } int limit = less ? 9 : f[digit]; long long ret = 0; for (int i = 0; i <= limit; i++) { if (four && i == 9) { ret += dfs(digit - 1, less || i < f[digit], true, false); continue; } if (i == 4) { ret += dfs(digit - 1, less || i < f[digit], contain, true); continue; } ret += dfs(digit - 1, less || i < f[digit], contain, false); } memoize[digit][less][contain][four] = ret; return ret;}int main(){ int t; scanf("%d", &t); while (t--) { scanf("%I64d", &n); to_digits(n); memset(memoize, -1, sizeof(memoize)); long long ans = dfs(64, false, false, false); printf("%I64d\n", ans); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/rainydays/p/4260792.html

你可能感兴趣的文章
Python易学就会(二)import的用法
查看>>
俄罗斯方块游戏——pyqt5
查看>>
每日技术阅读记(2019.01.26)
查看>>
Hello CKB!
查看>>
Java™ 教程(匿名类)
查看>>
用Promise构造函数来解决地狱回调问题
查看>>
那些让程序员崩溃又想笑的程序命名...
查看>>
[LeetCode] 404. Sum of Left Leaves
查看>>
初探APT 攻击
查看>>
react 使用ant design UI 父组件this.refs无法调用子组件自定的方法
查看>>
dubbo源码解析(三)注册中心——开篇
查看>>
Elasticsearch 参考指南(Index API)
查看>>
Git 使用指南
查看>>
Python爬虫的N种姿势
查看>>
MySQL小实践一:快速插入1000万条数据到MySQL数据库中
查看>>
网络协议 4 - 交换机与 VLAN
查看>>
split splice slice
查看>>
构建静态页面 之 [ 列表 ]
查看>>
函数、函数表达式、作用域、闭包
查看>>
Android 系统开发_技术细节篇 -- 快速点击导致打开两个重复的 Activity
查看>>