BZOJ - 1026 数位DP
2024-10-21 12:43:32
中文题面,注意st是不可以放到dp里面的,否则每次solve都要清零
注意状态的转移要st&&i==0,因为子结构也可能是st(当高位取0时)
而st是必然合法的
#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
using namespace std;
const int maxn = 20;
typedef long long ll;
int a[maxn];
ll l,r,dp[maxn][15];
ll DP(int cur,int st,int pre,int limit){
if(cur==0) return 1;
if(!st&&!limit&&dp[cur][pre]!=-1)return dp[cur][pre];
int up=limit?a[cur]:9;
ll ans=0;
rep(i,0,up){
if(!st&&abs(pre-i)<2)continue;
ans+=DP(cur-1,st&&i==0,i,limit&&a[cur]==i);
}
return (limit||st)?ans:dp[cur][pre]=ans;
}
ll solve(ll num){
int cur=0;
while(num){
a[++cur]=num%10;
num/=10;
}
return DP(cur,1,1212,1);
}
int main(){
memset(dp,-1,sizeof dp);
while(~scanf("%lld%lld",&l,&r)){
printf("%lld\n",solve(r)-solve(l-1));
}
return 0;
}
最新文章
- 帮公司人事MM做了个工资条拆分工具
- OpenGL渲染流程
- PHP程序员7小时学会Kotlin系列 - 第一小时 背景
- android MVP模式介绍与实战
- TeeChart曲线平滑 Line.Smoothed
- java.lang.UnsupportedClassVersionError: org/sonatype/nexus/bootstrap/jsw/JswLauncher : Unsupported major.minor version 51.0
- fatal error: openssl/sha.h: No such file or directory 解决方案
- Toast提示信息
- 文件大小转换成可显示的Mb,Gb和kb方法
- Python 函数和模块
- Windows Azure Web Role 的 IIS 重置
- stm32之CAN发送、接收详解
- 用jQuery实现鼠标在table上移动进行样式变化
- HDU2844_Coins【多重背包】【二进制优化】
- Django中的ORM
- doubango(1)--从协议栈结构说起
- 第二章 基本图像处理(Image Processing)
- XP环境下的网络证书问题
- cf438E. The Child and Binary Tree(生成函数 多项式开根 多项式求逆)
- C#压缩图片时保留原始的Exif信息