当前位置:网站首页>Digital DP template
Digital DP template
2022-07-05 00:50:00 【Krito.】
Simply save a board , In order to avoid going through documents and websites everywhere in the future .
notes : Not to explain , For personal use only .
explain
choose P2602 [ZJOI2010] The problem of number counting AC Code as a template .
1.dp Of n Each dimension of the dimension group represents a certain current state , Take this question as an example ,dp[pos][sum][st] in ,pos Represents the current number ,sum Indicates the number of occurrences of a number in the higher-order digits of the current digit ,st Indicates whether there is a leading 0.
2.dfs Search the possible value of each digit and save the current state . Again , Take this question as an example ,pos Indicates the current digit ,pre Indicates the size of the previous digit ( This question seems useless ),st Indicates whether it is a leading 0,sum Indicates the number of occurrences of a certain number so far ,limit Indicates whether there is a size limit for the current digit .
3.solve What you get is [0,x] The number of intervals that meet the requirements , Want to get [L,R], use solve(R)-solve(L-1) that will do .
4. Make a reasonable plan dp Number and meaning of dimensions of array ,dfs The state of being carried , The filter condition is digits dp The key to .
Templates
/*@_krito*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define LM LLONG_MAX
#define IM INT_MAX
#define _for(i,a,b) for(int i=a;i<=b;i++)
ll dp[15][15][2];
int a[15];
inline int read(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int spot;
ll dfs(int pos,int pre,int st,int sum,int limit){
if(!pos) return sum;
if(!limit&&dp[pos][sum][st]!=-1) return dp[pos][sum][st];
ll res=0;
int maxn=limit?a[pos]:9;
_for(i,0,maxn){
res+=dfs(pos-1,i,st&&(i==0),sum+((!st||i)&&(i==spot)),limit&&i==maxn);
}
dp[pos][sum][st]=res;
return res;
}
ll solve(ll x)
{
ll ans;
int len=0;
while(x) a[++len]=x%10,x/=10;
memset(dp,-1,sizeof(dp));
return ans=dfs(len,0,1,0,1);
}
int main(){
ll ANS=0;
ll L,R;
scanf("%lld%lld",&L,&R);
_for(i,0,9){
spot=i;
printf("%lld ",solve(R)-solve(L-1));
}
}边栏推荐
- 海思3559万能平台搭建:YUV422的踩坑记录
- leetcode518,377
- Is it safe to open an account in the College of Finance and economics? How to open an account?
- Recursive execution mechanism
- Detailed explanation of multi-mode input event distribution mechanism
- 26.2 billion! These universities in Guangdong Province have received heavy support
- lambda表达式
- 资深测试/开发程序员写下无bug?资历(枷锁)不要惧怕错误......
- (script) one click deployment of any version of redis - the way to build a dream
- Acwing164. Accessibility Statistics (topological sorting +bitset)
猜你喜欢

OpenHarmony资源管理详解

What if the programmer's SQL data script coding ability is weak and Bi can't do it?
![P3304 [SDOI2013]直径(树的直径)](/img/5c/984675bf4517481f80f54657c6c7ad.png)
P3304 [SDOI2013]直径(树的直径)

Continuous modification of business scenario functions

Detailed explanation of multi-mode input event distribution mechanism

多模输入事件分发机制详解

URLs and URIs

揭露测试外包公司,关于外包,你或许听到过这样的声音

dotnet-exec 0.6.0 released

初识ROS
随机推荐
SAP UI5 应用的主-从-从(Master-Detail-Detail)布局模式的实现步骤
[untitled]
[paper reading] Tun det: a novel network for meridian ultra sound nodule detection
Summer challenge brings you to play harmoniyos multi terminal piano performance
Les phénomènes de « salaire inversé » et de « remplacement des diplômés » indiquent que l'industrie des tests a...
海思3559万能平台搭建:YUV422的踩坑记录
Ruby tutorial
He worked as a foreign lead and paid off all the housing loans in a year
SAP UI5 应用开发教程之一百零七 - SAP UI5 OverflowToolbar 容器控件介绍的试读版
Safety learning week4
2022.07.03 (lc_6111_counts the number of ways to place houses)
Detailed explanation of openharmony resource management
【C】(笔试题)指针与数组,指针
User login function: simple but difficult
Oracle case: SMON rollback exception causes instance crash
挖财学院开户安全的吗?开户怎么开?
Operator explanation
2022.07.03(LC_6108_解密消息)
PyTorch: In-place Operation
[error reporting] "typeerror: cannot read properties of undefined (reading 'split')“