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 ...
随机推荐
- magento getMessage 不显示或者显示html标签解决方案
在模板页面不显示getMessage的解决方案是,在对应的控制器里加上如下代码: $this->_initLayoutMessages('customer/session'); 如果加入后出现如 ...
- iOS 集成银联支付(绕过文档的坑,快速集成)-转
本文是投稿文章,作者:南栀倾寒当初集成支付宝的时候,觉得见了这么丑的代码,加上这么难找的下载地址,在配上几乎为零的文档,寒哥就要吐血了. 下午去集成银联,才知道血吐的早了. 下载地址:https:// ...
- 转【Python】Python-skier游戏[摘自.与孩子一起学编程]
http://www.cnblogs.com/zhaoxd07/p/4914818.html 我遇到的问题 问题1 self.image=pygame.image.load("skier_d ...
- php自动加载函数
含义:将函数注册到SPL __autoload函数栈中.如果该栈中的函数尚未激活,则激活它们. 先看__autoload 函数 printit.class.php <?php class PRI ...
- HTML5——loading
https://www.cnblogs.com/wangmeijian/p/4449150.html https://www.cnblogs.com/yunser/p/canvas-baidu-loa ...
- swift 语言评价
杂而不精,一团乱麻!模式乱套,不适合作为一门学习和研究语言. 谢谢 LZ 介绍,看完之后更不想用 Swift 了.从 C++那里抄个 V-Table 来很先进嘛?别跟 C++一样搞什么 STL 就好了 ...
- inux 软件编译、安装、删除
640?wx_fmt=otherimage.png 本文学习内容 手动安装软件 手动安装下载源码的软件 源码编译3步骤 deb包-包依赖管理 dekg -l 查看所以安装deb的包 apt-get仓库 ...
- webgl 的空间变换(下):空间变换
在网上看了很多关于在三维世界中怎么把一个顶点经过一步步变化,最终呈现在我们的屏幕上的. 其实很多博客或者书籍已经讲的很清楚了,那为什么我还要特别再写一次博客来阐述自己观点呢?(这里只针对那些学习web ...
- CAD嵌套打印(网页版)
当用户需要打印两个CAD控件的图纸时,可以采用嵌套打印实现.点击此处在线演示. 实现嵌套打印功能,首先将两个CAD控件放入网页中,js代码如下: <p align="center&qu ...
- 问题:hdfs管理界面:Summary部分,Configured Capacity: 0 B
hdfs管理界面:Summary部分,Configured Capacity: 0 B.正常应该不是0,而是显示系统分配给hdfs的剩余容量. 原因:NameNode的clusterID和DataNo ...