lightOJ1140(数位dp)
2016-07-14 09:03
411 查看
题意:
从x写到y,要写多少个0,当然不含前导0
代码:
还是套路dp
从x写到y,要写多少个0,当然不含前导0
代码:
还是套路dp
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[50][50]; int digit[51]; int cal(ll val) { int len=0; if(val<0)return 0; if(val==0)return 1; while(val) { digit[len++]=val%10; val/=10; } memset(dp,-1,sizeof(dp)); return len-1; } // 数位位置 状态 限制 前导0标志(false==是前导0) ll dfs(int pos,int sta,int lim,bool J) { if(pos<0)return (!J)?1:sta; if((!lim) && (J) && (dp[pos][sta]^-1)) {//无限制且非前导0 return dp[pos][sta]; } int len=lim?digit[pos]:9; ll ans=0; for(int i=0; i<=len; ++i) { ans+=dfs(pos-1,sta+((J)&&(i==0)),lim&&(i==len),J||i); } if(lim==0&&(J))dp[pos][sta]=ans;//必须是非前导0 return ans; } ll work(ll val) { if(val<0)return 0; if(val==0)return 1; return dfs(cal(val),0,1,0); } ll n,m; int main() { int T; int coun=1; scanf("%d",&T); while(T--) { scanf("%lld%lld",&n,&m); printf("Case %d: %lld\n",coun++,work(m)-work(n-1)); } return 0; }
相关文章推荐
- ORACLE数据库和SQL Server数据库的区别
- SEO关键词布局技巧:合理才是硬道理
- 工厂方法模式
- Dragger 2遇到的坑 Dragger2详解 Dragger2学习最好的资料
- wampserver 主页里点击“Your Projects”下面项目名,显示错误的问题
- 关于网络上的各种mysql性能测试结论
- Spring4.0系列9-websocket简单应用
- C#计算程序执行速度
- 清除远程桌面连接记录
- Hive metastore database is not initialized. Please use schematool(...) to create the schema.
- 欢迎使用CSDN-markdown编辑器
- KSFramework常见问题:Lua脚本热重载,内存状态数据丢失?
- Trapping Rain Water
- java 基础IO/inputStream/outputStream/buffInputStrem/buffOutputStrem
- 如何在MakeFile中执行shell脚本文
- Java多线程,线程同步synchronized,线程死锁【线程池常规用法】多线程并发处理
- Android 通用ListView、GridView适配器
- 每天一个linux命令(48)--ln命令
- IIS大数据请求设置方法
- IIS Server is too busy 解决方法(IIS6)