bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)
难受啊,怎么又遇到我不会的题了(捂脸)
如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的……果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全部位然后判一下是不是上限边缘和前导零就OK
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
LL bit[]; int len,a[];
LL as[],ret[];//ret表示假如是上限边缘,后面有多少种填的方式
LL f[][][];
//f[k][fg][z]表示当前这个数x,搞到第k位的时候的数目
//fg表示该位是不是在上限边缘 z表示目前是否还是前导零
LL dfs(int x,int k,int fg,int z)
{
if(k==len+)return ;
if(f[k][fg][z]!=-)return f[k][fg][z]; LL ans=;
if(fg==)//如果前面的部分处于上限边缘
{
for(int i=;i<a[k];i++)//不填上限边缘,枚举填什么
{
if(z==&&i==)ans+=dfs(x,k+,,);
else
{
ans+=dfs(x,k+,,);
if(i==x)ans+=bit[len-k];
}
//如果i是要统计次数的那个数字,而且不是在前导零的时候,而且还不是在上限的边缘
//那么后面几位的数字有多少种填法x就出现了几次
}
//该位填上限边缘
if(z==&&a[k]==)ans+=dfs(x,k+,,);
else
{
ans+=dfs(x,k+,,);
if(a[k]==x)ans+=ret[k];
}
//如果填的是要统计次数的那个数字 而且不是在前导零的时候
//那么后面的数字最多有多少种填法x就出现了几次
}
else//没有限制
{
for(int i=;i<=;i++)//同上
{
if(z==&&i==)ans+=dfs(x,k+,,);
else
{
ans+=dfs(x,k+,,);
if(i==x)ans+=bit[len-k];
}
}
}
f[k][fg][z]=ans;
return ans;
}
char s[];
void cl()//把A减1
{
int t=len;
while(t>&&s[t]==''){s[t]='';t--;}
s[t]--;
if(s[t]==)
{
len--;
for(int i=;i<=len;i++)s[i]=s[i+]-'';
}
}
int main()
{
freopen("dream.in","r",stdin);
freopen("dream.out","w",stdout);
bit[]=;for(int i=;i<=;i++)bit[i]=bit[i-]*;
memset(as,,sizeof(as)); scanf("%s",s+);len=strlen(s+);cl();
for(int i=;i<=len;i++)a[i]=s[i]-'';
//0的情况,所以填的方案都要+1
ret[len]=;for(int i=len-;i>=;i--)ret[i]=a[i+]*bit[len-i-]+ret[i+];
for(int i=;i<=;i++)
{
memset(f,-,sizeof(f));
as[i]-=dfs(i,,,);
} scanf("%s",s+);len=strlen(s+);
for(int i=;i<=len;i++)a[i]=s[i]-''; ret[len]=;for(int i=len-;i>=;i--)ret[i]=a[i+]*bit[len-i-]+ret[i+];
for(int i=;i<=;i++)
{
memset(f,-,sizeof(f));
as[i]+=dfs(i,,,);
} for(int i=;i<;i++)printf("%d ",as[i]);
printf("%d\n",as[]);
return ;
}
bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)的更多相关文章
- [BZOJ1833][ZJOI2010]count 数字计数
[BZOJ1833][ZJOI2010]count 数字计数 试题描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入 输入文件中仅包含一行两个整数a ...
- BZOJ1833 ZJOI2010 count 数字计数 【数位DP】
BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...
- bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)
1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...
- [BZOJ1833][ZJOI2010]Count数字计数(DP)
数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...
- bzoj1833: [ZJOI2010]count 数字计数 数位dp
bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...
- bzoj1833: [ZJOI2010]count 数字计数 && codevs1359 数字计数
bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...
- [bzoj1833][ZJOI2010]count 数字计数——数位dp
题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...
- BZOJ1833 [ZJOI2010]count 数字计数 【数学 Or 数位dp】
题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式 输出文件中包含一行10个整数, ...
- 【数位dp】bzoj1833: [ZJOI2010]count 数字计数
数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...
随机推荐
- MongoDB中WiredTiger的数据可用性设置
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. MongoDB中WiredTiger的参数配置主要通过 wiredtiger_open (http://so ...
- STM32F407 外部中断 个人笔记
IO口 STM32F4有上百个IO口中,每个都可以作为外部中断输入 中断线 STM32F4的中断控制器支持22个外部中断/事件请求(中断线) 对于每个中断线,我们可以设置相应的触发方式(上升沿触发,下 ...
- python-001 第一个Python3.x程序 hello world
我们可以使用以下命令来查看我们使用的Python版本: (d:\ProgramData\Anaconda3) C:\Users\Administrator.2016-20160920ET>pyt ...
- sql通配符+sql中查询条件包含下划线等通配符的写法
一.SQL 通配符 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符. SQL 通配符必须与 LIKE 运算符一起使用. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代一个或多 ...
- iRule Event Order - HTTPv12
- mysql与时间有关的查询
date(str)函数可以返回str中形如"1997-05-26"格式的日期,str要是合法的日期的表达式,如2008-08-08 22:20:46 时间是可以比较大小的,例如: ...
- SkyWalking 分布式追踪系统
随着微服务架构的流行,一些微服务架构下的问题也会越来越突出,比如一个请求会涉及多个服务,而服务本身可能也会依赖其他服务,整个请求路径就构成了一个网状的调用链,而在整个调用链中一旦某个节点发生异常,整个 ...
- 寒武纪camp网络测试赛
寒武纪camp网络测试赛 地址:oj点我进入 A(树形dp+树链剖分) 题意: 分析: 考虑树形dp,f0(x)和f1(x)分别表示以x为根的子树,不取x点或取x点的最大合法子集的元素个数 那么对于一 ...
- 标准格式包含: 私有属性 无参构造 有参构造 setter 和getter 需求中的方法 需求一: 员工类Employee 属性:姓名name,工号id,工资salary 行为:显示所有成员信息的方法show() 需求二: 动物类Animal 属性:姓名name,年龄age 行为:吃饭
// 员工类 public class Employee { private String name; private int id; private double salary; public ...
- jackon - com.fasterxml.jackson.databind.exc.InvalidDefinitionException && UnrecognizedPropertyException: Unrecognized field 异常
在用jackson解析json数据是碰到的问题 1.首先是InvalidDefinitionException 测试发现可能是目标类中无无参数构造方法导致异常. 添加无参构造方法后发现前一个异常解决但 ...