[2017百度之星程序设计大赛
来源:互联网 发布:ie浏览器打不开淘宝 编辑:程序博客网 时间:2024/06/06 09:03
裸的数位DP,只需要判断之前是否已经改变过递增减就行了。
直接上模板。
#include<cstdio>#include<algorithm>#include<cstring>#include<cctype>#define ll long longusing namespace std;const int N=110,P=1000000007;ll f[N][2][10],a[N],n;ll dfs(ll pos,ll st,ll lim,ll pre){ if(pos==-1) {if(~pre)return 1;else return 0;} if(!lim&&~pre&&~f[pos][st][pre])return f[pos][st][pre]; ll up=lim?a[pos]:9;ll ans=0; for(int i=0;i<=up;i++){ if(pre==-1&&i==0)ans=(ans+dfs(pos-1,st,lim&&i==up,pre))%P;else if(pre==-1&&i!=0)ans=(ans+dfs(pos-1,st,lim&&i==up,i))%P;else if(st==0)ans=(ans+dfs(pos-1,i>pre,lim&&i==up,i))%P;else if(st==1&&i>=pre)ans=(ans+dfs(pos-1,st,lim&&i==up,i))%P; } if (!lim&&~pre) f[pos][st][pre]=ans; return ans;}char s[N];ll T;int main(){register int i,j,l; scanf("%lld",&T); memset(f,-1,sizeof(f)); for (l=1;l<=T;l++){ scanf("%s",s+1); n=strlen(s+1); for(i=1;i<=n;i++) a[n-i]=s[i]-'0'; printf("%lld\n",dfs(n-1,0,1,-1)); } return 0;}
阅读全文
0 0
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 【2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛
- 2017"百度之星"程序设计大赛-资格赛
- 已连接网络,出现浏览器无法连接到代理服务器
- P3761送外卖(最短路+状压dp)
- Maven提交项目时忽略target目录
- js有哪些内置对象
- 猴子补丁
- [2017百度之星程序设计大赛
- C语言网1074-数字整除
- 全面升级Android面试之事件分发机制
- swiper框架的使用教程
- 用户资源限制
- ubuntu16.04下使用anaconda安装tensorflow_gpu版本以及object detection的过程
- linux android studio
- suse 清除内核包
- 多态