BZOJ-3679(数位DP)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b;
int k[20];
ll dp[20][10][2];
ll dfs(int pos,int x,bool lead,bool limit){
if(pos == -1)return !lead;
if(!limit && !lead && dp[pos][x])return dp[pos][x];
int up = limit ? k[pos] : 9;
ll res = 0;
for(int i=0;i<=up;i++){
if(lead){
if(i == 0){
res += dfs(pos-1,x,lead,false);
}
else{
res += (x == i ? 2ll : 1ll) * dfs(pos-1,x,false,limit && k[pos] == i);
}
}
else{
res += (x == i ? 2ll : 1ll) * dfs(pos-1,x,false,limit && k[pos] == i);
}
}
if(!limit && !lead)dp[pos][x] = res;
return res;
}
ll solve(ll x,int z){
int pos = 0;
while(x){
k[pos++] = x%10;
x/=10;
}
return dfs(pos-1,z,true,true);
}
int main(){
scanf("%lld%lld",&a,&b);
for(int i=0;i<=9;i++){
printf("%lld ",solve(b,i) - solve(a-1,i));
}
puts("");
return 0;
}
BZOJ-3679(数位DP)的更多相关文章
- BZOJ 3679 数位DP
思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 f[i][mp[k*rec[j]]]+=f[i-1][j]; //By SiriusRen #in ...
- bzoj 3668 数位DP
收获: 1.如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP. /*************** ...
- bzoj 1833 数位dp
很裸的数位dp. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #defi ...
- bzoj 3209 数位DP+欧拉定理
枚举1的个数,统计有那么多1的数的个数 /************************************************************** Problem: 3209 Us ...
- BZOJ - 1026 数位DP
中文题面,注意st是不可以放到dp里面的,否则每次solve都要清零 注意状态的转移要st&&i==0,因为子结构也可能是st(当高位取0时) 而st是必然合法的 #include&l ...
- BZOJ 3209 数位DP
思路: 先预处理出来组合数 按位做 枚举sum[x]是多少 注意Mod不是一个质数 //By SiriusRen #include <cstdio> using namespace std ...
- BZOJ 3679 数字之积 数位DP
思路:数位DP 提交:\(2\)次 错因:进行下一层\(dfs\)时的状态转移出错 题解: 还是记忆化搜索就行,但是要用\(map\)记忆化. 见代码 #include<cstdio> # ...
- [BZOJ 1833] [ZJOI2010] count 数字计数 【数位DP】
题目链接:BZOJ - 1833 题目分析 数位DP .. 用 f[i][j][k] 表示第 i 位是 j 的 i 位数共有多少个数码 k . 然后差分询问...Get()中注意一下,如果固定了第 i ...
- [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】
题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...
- BZOJ.4513.[SDOI2016]储能表(数位DP)
BZOJ 洛谷 切了一道简单的数位DP,终于有些没白做题的感觉了...(然而mjt更强没做过这类的题也切了orz) 看部分分,如果\(k=0\),就是求\(\sum_{i=0}^n\sum_{j=0} ...
随机推荐
- 【BZOJ 2243】染色
传送门:洛谷 BZOJ 还不会LCT的小伙伴可以看一下这篇博客:LCT总结 我初学动态树时就是看着那篇博客学的,写的很好! 那好 言归正传. 显然树上 x 到 y 的路径的问题都可以用LCT Ac ...
- xml布局文件
https://blog.csdn.net/u013475386/article/details/44339035 gravity写在容器中中 layout_gravity写在控件中 layout_m ...
- 在MVC中使用dotless后台动态解析LESSCSS的学习笔记
通过学习LessCSS,我们知道,Less是需要通过编译才能生成 .css 文件,主要使用三种方式进行编译: 1)使用第三方编译工具,在项目发布前编译好放在项目中. 2)在浏览器端解析执行,需要引用 ...
- Mvc异常处理器
using System; using System.Text; using EMS.Domains.Core; using System.Web.Mvc; using Json.Net; using ...
- c#进行MD5加密方式和解密算法
--------------- 因为加密个解密都需要用到key所有在加密的后需要把key和加密码都存到数据库中 /// <summary> /// 唯一加密方式 /// </summ ...
- datatables后台分页例子(可直接复制代码)
1.head表签引用 这两个文件即可 2.复制下面的代码到webform中的head标签中 <script> $(function () { //提示信息 var lang = { &qu ...
- ASPX1
表单提交 <!--表单:收集用户的数据.---> <form method="post" action="AddInfo.ashx"> ...
- JVM类加载之创建对象的过程
JVM对象的创建 new一个对象到底发生了什么? 1.VM遇到new关键字:首先检查是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否被加载,验证,准备,解析,初始化过,如果没有, ...
- js根据鼠标方向划入遮罩层
js根据鼠标方向划入遮罩层: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- 多线程串口通信 MFC CSerialPort
写在前面: 晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉.本次主要写点MFC环境下多线程串口通信相关的东西,这包括线 ...