BZOJ 3679 数位DP
思路:
f[i][j]表示i位数乘积为j的方案数
j的取值最多5000多种,那就开个map存一下好了
f[i][mp[k*rec[j]]]+=f[i-1][j];
//By SiriusRen
#include <map>
#include <cstdio>
using namespace std;
#define int long long
int n,L,R,tot,rec[],f[][];
map<int,int>mp;
void dfs(int x){
if(x>n||mp.find(x)!=mp.end())return;
mp[x]=++tot,rec[tot]=x;
for(int i=;i<=;i++)dfs(x*i);
}
map<int,int>::iterator it;
int calc(int m){
int p=,base=,now=,ans=;
for(;*p<=m;base++,p*=);
for(int i=;i<=base;i++)
for(int j=;j<=tot;j++)
ans+=f[i][j];
for(int i=base;i>=;i--){
for(int j=;j<=tot;j++)
for(int k=;k<m/p;k++)
if(rec[j]*k*now<=n)
ans+=f[i][j];
now=m/p*now,m%=p,p/=;
if(!now)return ans;
}
return ans+(now<=n);
}
signed main(){
scanf("%lld%lld%lld",&n,&L,&R);
dfs(),f[][]=;
for(int i=;i<=;i++)
for(int j=;j<=tot;j++)
for(int k=;k<=;k++)
if(k*rec[j]<=n)f[i][mp[k*rec[j]]]+=f[i-][j];
printf("%lld\n",calc(R-)-calc(L-));
}
BZOJ 3679 数位DP的更多相关文章
- 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} ...
随机推荐
- listcontrol 加combobox实现
头文件 #pragma once#include "D:\Work\山东项目\StandardizedDrawing\sdUtils\CSGrid.h"#include " ...
- 【转】下载对应内核版本的asmlib
登陆oracle官网: http://www.oracle.com/ 注意:查询前,需要注册一个OTN账号,注册是免费的. 首页直接搜索“ASMLib”关键词(注意大小写) 进入搜索界面,点击第一项即 ...
- $(document).ready(function(){}) 与 window.onload = function(){} 区别
$(document).ready(fucntion(){ //在页面dom结构加载完毕后执行代码, }) window.onload = function(){ //页面所有内容加载完毕后,执行代码 ...
- 18/10/19 周五欢乐赛题解(c++版)
注意本题解并没有去追求最优解,只是用比较暴力的方法求解.D题听说要改说明不是位数30位,目前除了D题可能有问题之外其他代码已经全部正确. A.查找字串 用string BF(暴力求解即可) 代码 #i ...
- Flask - 请求处理流程和上下文源码分析
目录 Flask - 请求处理流程和上下文 WSGI Flask的上下文对象及源码解析 0. 请求入口 1.请求上下文对象的创建 2. 将请求上下文和应用上下文入栈 3.根据请求的URl执行响应的视图 ...
- net core 配置Redis Cache
参考文章地址:https://dotnetcoretutorials.com/2017/01/06/using-redis-cache-net-core/ 具体步骤: 1 Install-Pack ...
- noip模拟赛 楼
分析:题目可以转化为对于一个数,对它进行x次减法操作,n-x次加法操作,使他变成最小的非负整数.因为每减一次数就会减小,次数是一定的,所以可以二分x,就可以了. #include <cstdio ...
- redis高可用,保证高并发
目录 redis如何通过读写分离来承载读请求QPS超过10万+ redis replication以及master持久化对主从架构的安全意义 redis主从复制原理.断点续传.无磁盘化复制.过期key ...
- springCloud学习-断路器(Hystrix)
1.问题分析 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高 ...
- 【ACM】NYOJ_486_Old Calculator_20130725
Old Calculator时间限制:1000 ms | 内存限制:65535 KB 难度:1描述 szhhck have an old calculator bought 5 years ago ...