fzu 2113 数位dp
#include<stdio.h>
#include<string.h>
#define N 20
#define ll __int64
ll dp[N][N];//最多记忆400种情况
ll digit[N];
ll dfs(ll len,ll cnt,ll ok) {
if(!len) return cnt;
if(!ok&&dp[len][cnt]!=-1)
return dp[len][cnt];
ll i,ans=0,maxx=ok?digit[len]:9;
for(i=0;i<=maxx;i++) {
if(i==1)ans+=dfs(len-1,cnt+1,ok&&i==maxx);
else
ans+=dfs(len-1,cnt,ok&&i==maxx);
}
if(!ok)
dp[len][cnt]=ans;
return ans;
}
ll f(ll n) {
ll len=0;
while(n) {
digit[++len]=n%10;
n/=10;
}
return dfs(len,0,1);
}
int main() {
ll n,m,k;
memset(dp,-1,sizeof(dp));
while(scanf("%I64d%I64d",&n,&m)!=EOF) {
if(n>m) {
k=n;
n=m;
m=k;
}
printf("%I64d\n",f(m)-f(n-1));
}
return 0;}
<pre name="code" class="cpp">/*
数位dp
直接相加更快
另一种思路
*/
#include<stdio.h>
#include<string.h>
#define N 20
#define ll __int64
ll lower[N];//储存十的倍数。
ll dp[N][10];
ll digit[N];
ll rest[N];//用来储存有多少数
ll dfs(ll len,ll cnt,ll ok) {
if(!len) return cnt==1?1:0;
if(!ok&&dp[len][cnt]!=-1)
return dp[len][cnt];
ll i,ans=0,maxx=ok?digit[len]:9;
for(i=0;i<=maxx;i++)
ans+=dfs(len-1,i,ok&&i==maxx);
if(cnt==1) {
if(!ok)
ans+=lower[len];
else
ans+=rest[len];//
}
if(!ok)
dp[len][cnt]=ans;
return ans;
}
ll f(ll n) {
ll len=0;
ll z=n;
while(n) {
digit[++len]=n%10;
rest[len]=z%lower[len]+1;//比如是163的话,因为从100-163所以取余后要加一
n/=10;
}
return dfs(len,0,1);
}
int main() {
ll i,n,m;
lower[0]=1;
memset(dp,-1,sizeof(dp));
for(i=1;i<=19;i++)
lower[i]=lower[i-1]*10;
while(scanf("%I64d%I64d",&n,&m)!=EOF) {
printf("%I64d\n",f(m)-f(n-1));
}
return 0;}
fzu 2113 数位dp的更多相关文章
- fzoj 2113数位dp
参考http://blog.csdn.net/xingyeyongheng/article/details/8785785 #include<stdio.h> #define ll lon ...
- FZU 2113(数位dp)
题目连接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=38054 题意:求区间[a,b]中包含'1'的个数. 分析:数位dp ...
- FZU 2113 BCD Code 数位dp
数位dp,但是很奇怪的是我在虚拟oj上用GUC C++提交会wa,用Visual c++提交正确,但是加上注释后提交又莫名CE--好任性啊 0 ,0 题目思路:看代码吧 注释很详细 #include& ...
- FZU - 2109 Mountain Number 数位dp
Mountain Number One integer number x is called "Mountain Number" if: (1) x>0 and x is a ...
- 数位DP之小小结
资料链接:http://wenku.baidu.com/view/9de41d51168884868662d623.html http://wenku.baidu.com/view/d2414ffe0 ...
- 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP
[BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...
- bzoj1026数位dp
基础的数位dp 但是ce了一发,(abs难道不是cmath里的吗?改成bits/stdc++.h就过了) #include <bits/stdc++.h> using namespace ...
- uva12063数位dp
辣鸡军训毁我青春!!! 因为在军训,导致很长时间都只能看书yy题目,而不能溜到机房鏼题 于是在猫大的帮助下我发现这道习题是数位dp 然后想起之前讲dp的时候一直在补作业所以没怎么写,然后就试了试 果然 ...
- HDU2089 不要62[数位DP]
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- Oracle10g的imp命令
Oracle10g使用imp命令导出数据为dmp:imp system/password@orcl file=rd_online_20181102.dmp fromuser=user1 touser= ...
- XmlDocument
XmlDocument增删改查. using System; using System.Collections.Generic; using System.ComponentModel; using ...
- CF599B Spongebob and Joke
思路: 模拟,注意特判. 实现: #include <iostream> #include <cstdio> using namespace std; ], x[], y[], ...
- Nodejs AES加密不一致问题的解决
最近在做android游戏,客户端与Nodejs服务端数据的交互用AES进行加密,发现Nodejs与java的加密形式不一样.查询N久资料发现java端需要对密钥再MD5加密一遍(我了个大擦),本来对 ...
- 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...
- 在JAVA中封装JSONUtils工具类及使用 (转)
import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util. ...
- tomcat不打印日志
commons-logging.jar导入这个包到tomcat lib下 2.修改tomcat的bin目录下面的catalina.bat文件 只需修改:set CLASSPATH=%CLASSP ...
- 以JSONobject形式提交http请求
总结一下设置图标的三种方式: (1)button属性:主要用于图标大小要求不高,间隔要求也不高的场合. (2)background属性:主要用于能够以较大空间显示图标的场合. (3)drawableL ...
- 自动交互脚本之expect使用记录
之前一直没怎么用这个命令,意外用了一下,还不错,那这个是干嘛的呢 我们或多或少会远程登录其他服务器,需要执行某项任务,通常需要手动接入,输入密码啊,等等 那我们如何有效的自动执行呢,expect可以解 ...
- IIS更改根目录
服务器中打开IIS管理器,选择网站,再选展开后的站点,点击右边高级设置,最后更改弹框中的物理地址即可: