数位dp模板
来源:互联网 发布:淘宝的全球购是真货吗 编辑:程序博客网 时间:2024/06/05 18:41
数位dp是一种计数的dp,一般统计满足区间【L,R】内满足条件的一些数的个数,数位就是对一个数的每一位进行dp,即个位,十位,百位。。。数的每一位。一般当数据比较大时就可考虑数位dp,一般是枚举区间【1,R】减去区间【1,L-1】得。下面就是一个简单的基础模板。
#include<bits/stdc++.h> using namespace std; int a[50]; int dp[50][50]; int dfs(int num, ,bool limit) //位数,传递条件 ,上界判断 { if(num==-1)return 0; //最后一位时,根据情况返回1或0 if(!limit && dp[num][ ]!=-1) //已经走过此种状态,记忆化 return dp[num][ ]; int ans=0; //计数 int up=limit?a[num]:9; //上界 //枚举计数 for(int i=0;i<=up;i++){ if() if() //... 题目限制条件 ans+=dfs(num-1, ,limit && i== up);//传递,状态转移 } if(!limit) //判断是否可以储存 dp[num][ ]=ans; return ans; } int solve(int x) { int num=0; while(x){ //将x每一位存入数组中 a[num]=x%b; //b表示进制!!! num++; x/=b; } return dfs(num-1,/* 题目限制条件 */,true);//传递 } int main() { int l,r; memset(dp,-1,sizeof(dp)); while(scanf("%d%d",&l,&r)!=EOF) { printf("%d\n",solve(r)-solve(l-1)); } return 0; }
阅读全文
0 0
- 数位dp模板
- 数位DP模板
- 数位DP模板
- 数位DP模板
- 【自用模板】数位dp
- 数位DP模板
- 数位DP模板
- 数位DP模板详解
- 数位DP模板
- 数位DP模板
- 数位DP模板
- 数位DP模板
- 数位DP(模板)
- 数位DP模板
- 数位DP模板
- 数位DP模板
- 【数位DP模板】
- 数位dp模板
- python---基本socket编写
- 过山车||HDU2063
- 行列式的计算
- java实现二叉树的创建以及遍历
- hdu 2090 算菜价(水到不能再水!)
- 数位dp模板
- 百度之星复赛--Valley Numer----数位dp
- 前端常用知识
- 2017最新PHP初级经典面试题目汇总(下篇)
- linux 基础 —— 网络管理
- spark学习-SparkSQL--13-java版JavaRDD与JavaPairRDD的互相转换
- C++面试题之哪些函数不能声明为虚函数
- Java中Iterator和ListIterator的区别
- 例2-18 产生一个从2Hz增加到10Hz的啁啾信号(扫频余弦信号),并将其推迟500个采样周期。