博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Hdu3555] Bomb(数位DP)
阅读量:6466 次
发布时间:2019-06-23

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

Description

题意就是找0到N有多少个数中含有49。

\(1\leq N \leq2^{63}-1\)

Solution

数位DP,与hdu3652类似

\(F[i][state]\)表示位数为i,包含49状态为state时的方案数

注意开\(long long\)

Tips

注意N范围很大,位数不止10位!!

Code

#include 
#include
#define ll long longint d[20];ll dp[20][3],n,T;inline ll read(){ ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}ll dfs(int p,int sta,int lim){ ll &tmp=dp[p][sta],r=0; if(!lim&&tmp!=-1) return tmp; if(!p) return sta==2; int mx=lim?d[p]:9; for(int i=0;i<=mx;++i){ int t=0; if(sta==2) t=2; else if(sta==1&&i==9) t=2; else if(i==4) t=1; r+=dfs(p-1,t,lim&&(i==mx)); } return lim?r:tmp=r;}int main(){ T=read(); memset(dp,-1,sizeof(dp)); while(T--){ n=read(); int len=0; while(n){ d[++len]=n%10; n/=10; } d[len+1]=0; printf("%lld\n",dfs(len,0,1)); } return 0;}

转载于:https://www.cnblogs.com/void-f/p/8092633.html

你可能感兴趣的文章
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
Windows 搭建Hadoop 2.7.3开发环境
查看>>
python操作mysql数据库实现增删改查
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Msg 15138 The database principal owns a schema in the database, and cannot be dropped.
查看>>
Cassandra 中的Snitch
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
Java内部类总结
查看>>
NeHe OpenGL第二课:多边形
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>