很裸的数位dp。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg
using namespace std; const int N = 2e5 + ;
const int M = 1e7 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = ; LL f[][], L, R;
int s[], tot; LL dp(int p, int cnt, bool limit, bool zero, int val) {
if(p == -) return cnt;
if(!limit && !zero && ~f[p][cnt]) return f[p][cnt];
LL ans = ;
int up = limit ? s[p] : ;
for(int i = ; i <= up; i++) {
if(!val) ans += dp(p - , cnt + (!zero && (!i)), limit && (i == up), zero && (!i), val);
else ans += dp(p - , cnt + (val == i), limit && (i == up), zero && (!i), val);
}
if(!limit && !zero) f[p][cnt] = ans;
return ans;
} LL solve(LL x, int val) {
if(x < ) return ;
tot = ;
for(LL i = x; i; i /= ) s[tot++] = i % ;
memset(f, -, sizeof(f));
return dp(tot - , , , , val);
} int main() {
scanf("%lld%lld", &L, &R);
for(int i = ; i < ; i++) {
printf("%lld ", solve(R, i) - solve(L - , i));
}
puts("");
return ;
} /*
*/

bzoj 1833 数位dp的更多相关文章

  1. bzoj 3668 数位DP

    收获: 1.如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP. /*************** ...

  2. bzoj 3209 数位DP+欧拉定理

    枚举1的个数,统计有那么多1的数的个数 /************************************************************** Problem: 3209 Us ...

  3. BZOJ - 1026 数位DP

    中文题面,注意st是不可以放到dp里面的,否则每次solve都要清零 注意状态的转移要st&&i==0,因为子结构也可能是st(当高位取0时) 而st是必然合法的 #include&l ...

  4. BZOJ 3679 数位DP

    思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 f[i][mp[k*rec[j]]]+=f[i-1][j]; //By SiriusRen #in ...

  5. BZOJ 3209 数位DP

    思路: 先预处理出来组合数 按位做 枚举sum[x]是多少 注意Mod不是一个质数 //By SiriusRen #include <cstdio> using namespace std ...

  6. [BZOJ 1833] [ZJOI2010] count 数字计数 【数位DP】

    题目链接:BZOJ - 1833 题目分析 数位DP .. 用 f[i][j][k] 表示第 i 位是 j 的 i 位数共有多少个数码 k . 然后差分询问...Get()中注意一下,如果固定了第 i ...

  7. BZOJ 1833 数字计数 数位DP

    题目链接 做的第一道数位DP题,听说是最基础的模板题,但还是花了好长时间才写出来..... 想深入了解下数位DP的请点这里 先设dp数组dp[i][j][k]表示数位是i,以j开头的数k出现的次数 有 ...

  8. 【BZOJ】1833: [ZJOI2010] count 数字计数(数位dp)

    题目 传送门:QWQ 分析 蒟蒻不会数位dp,又是现学的 用$ dp[i][j][k] $ 表示表示长度为i开头j的所有数字中k的个数 然后预处理出这个数组,再计算答案 代码 #include < ...

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

    非典型数位dp 先预处理出f[i][j][k]表示从后往前第i位为j时k的个数,然后把答案转换为ans(r)-ans(l-1),用预处理出的f数组dp出f即可(可能也不是dp吧--) #include ...

随机推荐

  1. Ubuntu下Sublime Text 2优化配置

    以前经常用Notepad++,最近因为需要长期在Linux环境下进行C开发,就使用了sublime Text 2,这里就不介绍基本的了主要针对我使用的经验中进行一些总结. 1.pacage contr ...

  2. css等比例分割父级容器(完美三等分)

    html部分代码: 方法一: 浮动布局+百分比 (将子元素依次左浮动,根据子元素的个数,设定每个子元素的宽度百分比) 方法二:行内元素(inline-block)+百分比 方法三: 父元素  disp ...

  3. 配置pdo 的用户和密码,

    注意:要进入mysql命令行来操作~~~~ grant all on *.* to pdo_root@'%' identified by 'pdo_pwd'; flush privileges

  4. scrollbar样式

    .friends-list-content { height: 520px; overflow-y: scroll; } .friends-list-content::-webkit-scrollba ...

  5. 1.java内存区域与内存溢出异常

    1.java运行时数据区如图所示: 2.每个区域的功能 (1)程序计数器(寄存器) 当前线程所执行的字节码的行号指示器 为了线程切换后能够恢复到正确的执行位置,因此每个线程拥有自己独立的程序计数器 如 ...

  6. CF864 E DP 输出路径

    n个物品有Deadline,拿物品需要花费时间,问取得最大价值的方案. 本质是个01背包,先按时间排序,然后把花费的时间作为背包就行了. 主要就是找方案,倒过来找发生转移的就行了. 太菜了真的不会打C ...

  7. gym100712 ACM Amman Collegiate Programming Contest

    非常水的手速赛,大部分题都是没有算法的.巨慢手速,老年思维.2个小时的时候看了下榜,和正常人差了3题(,最后还没写完跑去吃饭了.. A 水 Sort 比大小 /** @Date : 2017-09-0 ...

  8. 2015/11/1用Python写游戏,pygame入门(1):pygame的安装

    这两天学习数据结构和算法,有时感觉并不如直接做项目来的有趣.刚刚学完python的基本使用,现在刚好趁热打铁做个小项目. 由于本人一直很想制作一款游戏,就想使用Python制作一个基础的游戏.搜了一下 ...

  9. CodeForces - 1004C

    Since Sonya is interested in robotics too, she decided to construct robots that will read and recogn ...

  10. Problem 2278 YYS (FZU + java大数)

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2278 题目: 题意: 有n种卡牌,每种卡牌被抽到的概率为1/n,求收齐所有卡牌的天数的期望. 思路: 易推得公 ...