题目链接:https://cn.vjudge.net/contest/278036#problem/D

题目大意:T组测试数据,每一次输入两个数,求的是在这个区间里面,有多少个0,比如说19203包括一个0,123包括0个0。

具体思路:数位dp,对于当前的这一位的所有情况,先看一下这一位上之前的数是不是都是0,如果都是0的话,那么这一位上即使是0也不能计算在内,因为00还是1个0。dp[i][j]代表的是第i位之前有多少0,注意,对于初始条件,我们设置为这个数的前面也都是0,举个例子1234,我们在枚举第一位的所有情况的时候,如果是0的话,是不应该记录在内的,所以我们设置初始位置也存在前导0.

AC代码:

 #include<iostream>
#include<stack>
#include<iomanip>
#include<cstring>
#include<cmath>
#include<stdio.h>
#include<algorithm>
#include<string>
using namespace std;
# define ll long long
const int maxn =+;
ll dig[maxn],dp[maxn][maxn];
ll dfs(int len,int t,bool head0,bool fp)
{
if(!len)
{
if(head0)//一开始在这个地方卡住了,我们需要记录的是第i位之前存在多少0,那么0的时候就是一个,1-9也是1个。
return ;
return t;
}
if(!fp&&!head0&&dp[len][t]!=-)
return dp[len][t];
ll ans=,fmax = fp?dig[len]:;
for(int i=; i<=fmax; i++)
{
if(head0)
ans+=dfs(len-,,head0&&i==,fp&&i==fmax);//按照递归的形式,只有当前面的都是0的时候,当前这一位也是0的时候,才算是前导0
else
ans+=dfs(len-,t+(i==),head0&&i==,fp&&i==fmax);
}
if(!fp&&!head0)
dp[len][t]=ans;
return ans;
}
ll cal(ll t)
{
int num=;
memset(dp,-,sizeof(dp));
while(t)
{
dig[++num]=t%;
t/=;
}
return dfs(num,,,);
}
int main()
{
int T;
scanf("%d",&T);
int Case=;
while(T--)
{
ll n,m;
scanf("%lld %lld",&n,&m);
printf("Case %d: ",++Case);
printf("%lld\n",cal(m)-cal(n-));
}
return ;
}

数位dp(D - How Many Zeroes? LightOJ - 1140 )的更多相关文章

  1. How Many Zeroes? LightOJ - 1140

    #include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #incl ...

  2. [暑假集训--数位dp]LightOJ1140 How Many Zeroes?

    Jimmy writes down the decimal representations of all natural numbers between and including m and n, ...

  3. LightOJ 1140: How Many Zeroes? (数位DP)

    当前数位DP还不理解的点: 1:出口用i==0的方式 2:如何省略状态d(就是枚举下一个数的那个状态.当然枚举还是要的,怎么把空间省了) 总结: 1:此类DP,考虑转移的时候,应当同时考虑查询时候的情 ...

  4. LightOJ 1140 How Many Zeroes? (数位DP)

    题意:统计在给定区间内0的数量. 析:数位DP,dp[i][j] 表示前 i 位 有 j 个0,注意前导0. 代码如下: #pragma comment(linker, "/STACK:10 ...

  5. LightOJ 1140 计数/数位DP 入门

    题意: 给出a,b求区间a,b内写下过多少个零 题解:计数问题一般都会牵扯到数位DP,DP我写的少,这道当作入门了,DFS写法有固定的模板可套用 dp[p][count] 代表在p位 且前面出现过co ...

  6. UVALive - 6575 Odd and Even Zeroes 数位dp+找规律

    题目链接: http://acm.hust.edu.cn/vjudge/problem/48419 Odd and Even Zeroes Time Limit: 3000MS 问题描述 In mat ...

  7. LightOJ 1032 - Fast Bit Calculations 数位DP

    http://www.lightoj.com/volume_showproblem.php?problem=1032 题意:问1~N二进制下连续两个1的个数 思路:数位DP,dp[i][j][k]代表 ...

  8. LightOJ 1068 Investigation (数位dp)

    problem=1068">http://www.lightoj.com/volume_showproblem.php?problem=1068 求出区间[A,B]内能被K整除且各位数 ...

  9. lightoj 1021 - Painful Bases(数位dp+状压)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1021 题解:简单的数位dp由于总共就只有16个存储一下状态就行了.求各种进制能 ...

随机推荐

  1. 关于Python matplotlib显示汉字乱码问题

    我也是一个初学者,在今天编程时遇到的一个问题,我是基于Eclipse编写Python代码,在使用matplotlib进行数据可视化时,发现显示不了汉字并且出现乱码问题. (1)使用中文注释时报错: 解 ...

  2. vs2013安装过程及使用心得

    进入http://www.itellyou.cn/ 方法/步骤 1 1:点击中文简体 2:钩出前面的空格 3:点击详细信息 4:复制到网页进行搜索迅雷下载   等待下载完成之后,双击文件 我们双击文件 ...

  3. Postgresql迁移数据文件存放位置

    1. POSTGRESQL的安装 centos7 里面默认的pgsql的版本是 如果想用更高的版本需要执行以下如下的命令 rpm -ivh https://download.postgresql.or ...

  4. jQuery3 slim版本和普通版本区别,如何选择?

    区别概述: slim即简化版,比普通版本缺少Ajax和特效模块模块. 官方发布地址:http://blog.jquery.com/2017/03/20/jquery-3-2-1-now-availab ...

  5. [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单

    本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单  async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...

  6. SpringMVC处理ajax请求的跨域问题和注意事项

    .首先要知道ajax请求的核心是JavaScrip对象和XmlHttpRequest,而浏览器请求的核心是浏览器我的个人博客(基于SSM,Redis,Tomcat集群的后台架构) github:htt ...

  7. Educational Codeforces Round 14 D. Swaps in Permutation(并查集)

    题目链接:http://codeforces.com/contest/691/problem/D 题意: 题目给出一段序列,和m条关系,你可以无限次互相交换这m条关系 ,问这条序列字典序最大可以为多少 ...

  8. bzoj 4034: [HAOI2015]树上操作 (树剖+线段树 子树操作)

    4034: [HAOI2015]树上操作 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 6779  Solved: 2275[Submit][Stat ...

  9. MT【80】单调性求函数表达式

    提示:$f(f(f(x)-lnx)-ln(f(x)-lnx))=1+e=f(f(x)-lnx),\because f(x)$单调.得: $f(f(x)-lnx)-ln(f(x)-lnx)=f(x)-l ...

  10. zk会话,快照,序列化,本地存储

    FolloewerRequestProcessor类 追随者 输入会有不同的形式,客户端请求,提议,提交事务 通过箭头来标示追随者处理的不同路径 本地存储 事务日志和快照 SyncRequestPro ...