难受啊,怎么又遇到我不会的题了(捂脸)

如题,这是一道数位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)的更多相关文章

  1. [BZOJ1833][ZJOI2010]count 数字计数

    [BZOJ1833][ZJOI2010]count 数字计数 试题描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入 输入文件中仅包含一行两个整数a ...

  2. BZOJ1833 ZJOI2010 count 数字计数 【数位DP】

    BZOJ1833 ZJOI2010 count 数字计数 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包 ...

  3. bzoj1833: [ZJOI2010]count 数字计数(数位DP+记忆化搜索)

    1833: [ZJOI2010]count 数字计数 题目:传送门 题解: 今天是躲不开各种恶心DP了??? %爆靖大佬啊!!! 据说是数位DP裸题...emmm学吧学吧 感觉记忆化搜索特别强: 定义 ...

  4. [BZOJ1833][ZJOI2010]Count数字计数(DP)

    数位DP学傻了,怎么写最后都写不下去了. 这题严格上来说应该不属于数位DP?只是普通DP加上一些统计上的判断吧. 首先复杂度只与数的位数$\omega$有关,所以怎么挥霍都不会超. f[i][j][k ...

  5. bzoj1833: [ZJOI2010]count 数字计数 数位dp

    bzoj1833 Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a.b,含义如上所述. O ...

  6. bzoj1833: [ZJOI2010]count 数字计数 && codevs1359 数字计数

    bzoj1833 codevs1359 这道题也是道数位dp 因为0有前导0这一说卡了很久 最后发现用所有位数减1~9的位数就okay.....orzczl大爷 其他就跟51nod那道统计1出现次数一 ...

  7. [bzoj1833][ZJOI2010]count 数字计数——数位dp

    题目: (传送门)[http://www.lydsy.com/JudgeOnline/problem.php?id=1833] 题解: 第一次接触数位dp,真的是恶心. 首先翻阅了很多很多一维dp,因 ...

  8. BZOJ1833 [ZJOI2010]count 数字计数 【数学 Or 数位dp】

    题目 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入格式 输入文件中仅包含一行两个整数a.b,含义如上所述. 输出格式 输出文件中包含一行10个整数, ...

  9. 【数位dp】bzoj1833: [ZJOI2010]count 数字计数

    数位dp姿势一直很差啊:顺便庆祝一下1A Description 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. Input 输入文件中仅包含一行两个整数a ...

随机推荐

  1. LeetCode刷题笔记-递归-路径总和

    题目描述: 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 su ...

  2. python022 Python3 面向对象

    Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. 如果你以前没有接触 ...

  3. 使现有的VSCode成为便携版(绿色版)

    VSCode可以说是各种代码编辑器前端之中的神器了,相对体积小且扩展性强,我们希望将它携带在U盘中在各种工作环境中使用,官方也提供了在Windows,Linux和MacOS三大平台中使VSCode便携 ...

  4. 【BZOJ1061】志愿者招募(单纯形,对偶性)

    题意: 这个项目需要N 天才能完成,其中第i 天至少需要 Ai 个人. 布布通过了解得知,一共有M 类志愿者可以招募.其中第i 类可以从第Si 天工作到第Ti 天,招募费用 是每人Ci 元.新官上任三 ...

  5. msp430项目编程31

    msp430中项目---无线通信系统31 1.SPI工作原理 2.nrf24l01工作原理 3.代码(显示部分) 4.代码(功能实现) 5.项目总结

  6. DNS Prefetch 【DNS 预解析技术】

    DNS 实现域名到IP的映射.通过域名访问站点,每次请求都要做DNS解析.目前每次DNS解析,通常在200ms以下.针对DNS解析耗时问题,一些浏览器通过DNS Prefetch 来提高访问的流畅性. ...

  7. iOS 调用系统相册 相机 时,显示中文标题

    解决手机语言已经设置显示中文 在调用系统相册.相机界面 时显示英文问题, 在 info.plist里面添加Localized resources can be mixed YES 表示是否允许应用程序 ...

  8. 牛客网 牛客网暑期ACM多校训练营(第三场)E KMP

    链接:https://www.nowcoder.com/acm/contest/141/E 题目描述 Eddy likes to play with string which is a sequenc ...

  9. POJ 2337 【字典序】【欧拉回路】

    题意: 给你一些单词,判断这些单词能否在保证首尾单词相同的情况下连成一排. 如果有多组解,输出字典序最小的一组解. 这题... WA了两天. 错误有以下: 1.没有初始化好起始位置,默认起始位置是a了 ...

  10. HOST绑定和VIP映射

    今天上线需要配置RAL,处理半天,发现是需要HOST和IP分开来配. 比如: curl -H "Host: ktvin.nuomi.com" "http://10.207 ...