bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数
题目:传送门
题解:
今天是躲不开各种恶心DP了???
%爆靖大佬啊!!!
据说是数位DP裸题...emmm学吧学吧
感觉记忆化搜索特别强:
定义f[i][j][k]表示若前i个位置有k个j的此时的全局方案数,然后就可以记忆化搜索了(具体看代码吧)
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
LL f[][][],a[];
LL n,m;
LL dfs(int pos,int x,int sum,bool ld,bool lt)//ld表示当前情况是否要考虑前导0,lt表示的是枚举数字的上限是否有规定
{
if(pos==)return sum;
if(ld==false && lt==false && f[pos][x][sum]!=-)return f[pos][x][sum];
LL up=,ans=;if(lt==true)up=a[pos];
for(int i=;i<=up;i++)
{
int ss=sum;bool bk1=false,bk2=false;
if(i==x)ss++;
if(ld==true && i==){bk1=true;if(x==)ss--;}
if(lt==true && i==a[pos])bk2=true;
ans+=dfs(pos-,x,ss,bk1,bk2);
}
if(ld==false && lt==false)f[pos][x][sum]=ans;
return ans;
}
LL sol(LL x,int y)
{
int pos=;
while(x){a[++pos]=x%;x/=;}
return dfs(pos,y,,,);
}
int main()
{
memset(f,-,sizeof(f));
scanf("%lld%lld",&n,&m);
for(int i=;i<;i++)printf("%lld ",sol(m,i)-sol(n-,i));
printf("%lld\n",sol(m,)-sol(n-,));
return ;
}
bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)的更多相关文章
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- [bzoj1833][ZJOI2010]count 数字计数——数位dp
题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...
- 【BZOJ-1833】count数字计数 数位DP
1833: [ZJOI2010]count 数字计数 Time Limit: 3 Sec Memory Limit: 64 MBSubmit: 2494 Solved: 1101[Submit][ ...
- 1833: [ZJOI2010]count 数字计数——数位dp
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1833 省选之前来切一道裸的数位dp.. 题意 统计[a,b]中0~9每个数字出现的次数(不算 ...
- BZOJ 1833 ZJOI2010 count 数字计数 数位DP
题目大意:求[a,b]间全部的整数中0~9每一个数字出现了几次 令f[i]为i位数(算前导零)中每一个数出现的次数(一定是同样的,所以仅仅记录一个即可了) 有f[i]=f[i-1]*10+10^(i- ...
- BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...
- [BZOJ1833][ZJOI2010]count 数字计数
[BZOJ1833][ZJOI2010]count 数字计数 试题描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入 输入文件中仅包含一行两个整数a ...
- 数位dp/记忆化搜索
一.引例 #1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an ...
- [hihocoder 1033]交错和 数位dp/记忆化搜索
#1033 : 交错和 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 给定一个数 x,设它十进制展从高位到低位上的数位依次是 a0, a1, ..., an - 1 ...
随机推荐
- .net中实现aspnetpager分页
第一步首先导入aspnetpager控件,然后再把他从工具箱中拖出,代码如下: <webdiyer:AspNetPager ID="aspnetpager1" runat= ...
- nodejs脚手架express-generator
1.安装生成器 npm install express-generator -g 2. 创建名称为APP的应用: express my-project 3.安装依赖包 cd my-project np ...
- js-内置对象及相关语法
1:如图(视频截取的) this指的是当前标签的对象. var ary=new Array("mark","jay","leslie"); ...
- SAP computer之RAM
RAM The RAM is a 16 X 8 static TTL RAM. We can program the RAM by means of the address and data swit ...
- 面试回答问题要防范hr的陷阱
面试技巧是大众化的,比较实在.在经历的各种面试中,最不容易防范的面试就是“拉呱”(山东方言,聊天的意思),这样子自己容易放松警惕. 看看下面的,就知道应该怎么应对这些“滑头”的HR! 1.我们为什么要 ...
- 在jboss上部署web应用
1.JBoss介绍 JBoss完全实现了J2EE的服务栈: EJB (Enterprise JavaBeans) JMS (Java Message Service) JTS/JTA (Java Tr ...
- angular搭建
脚手架工具:angular-cli 1. npm install -g @angular/cli 2.ng new xxx 3.cd xxx , ng serve
- javaee字符文件的复制
package Zy; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWrit ...
- 玩转python 各种数据类型的转换
# -*- coding: utf-8 -*- # @Time : 2019/4/28 14:27 # @Author : wujf # @Email : 1028540310@qq.com # @F ...
- 平衡二叉树(Self-balancing Binary Search Tree)
Date: 2019-04-11 18:49:18 AVL树的基本操作 //存储结构 struct node { int data; int height; //记录当前子树的高度(叶子->根) ...