bzoj 1026(数位dp)
来源:互联网 发布:itunes删除软件记录 编辑:程序博客网 时间:2024/06/01 09:29
传送门
题解:
数位dp,注意高位0不需要满足”相邻两位之差不小于2“的条件(最高位没有之前的相邻一位)
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;int dp[11][10],b[11];int x,y;int dfs(int pos,int now,bool t,bool lim) { if (!pos) return 1; if (t&&~dp[pos][now]) return dp[pos][now]; int end=lim?b[pos]:9,ans=0; if (!t) for (int i=0;i<=end;++i) ans+=dfs(pos-1,i,i,lim&&(i==end)); else for (int i=0;i<=end;++i) if (abs(i-now)>1) ans+=dfs(pos-1,i,true,lim&&(i=end)); if (t&&!lim) dp[now][pos]=ans; return ans;}int work(int v) { int len=0; while (v) { b[++len]=v%10; v/=10; } return dfs(len,0,0,1);}int main() { memset(dp,-1,sizeof(dp)); scanf("%d%d",&x,&y); printf("%d\n",work(y)-work(x-1)); return 0;}
阅读全文
0 0
- bzoj 1026(数位dp)
- BZOJ-1026 (数位dp)
- BZOJ 1026 数位dp
- BZOJ 1026 数位DP
- BZOJ 1026 (数位dp)
- BZOJ 1026 windy数 (数位DP)
- BZOJ-1026-windy数(数位DP)
- bzoj 1026: [SCOI2009]windy数 (数位dp)
- BZOJ 1026: [SCOI2009]windy数 (裸的数位dp)
- 【bzoj 1026】[SCOI2009]windy数(数位dp)
- bzoj 1026: [SCOI2009]windy数(数位dp)
- [bzoj 1026]windy数[数位DP]
- 数位dp BZOJ 1026: [SCOI2009]windy数
- BZOJ 1026 SCOI2009 windy数 数位DP
- bzoj 1026 windy数(数位DP)
- 【BZOJ】1026: [SCOI2009]windy数 数位DP
- bzoj 1026 Windy数 数位DP
- BZOJ 1026 [SCOI2009]windy数 数位DP?
- 用include 引用头文件时,双引号和尖括号的区别
- [BZOJ]3809 3809: Gty的二逼妹子序列 莫队+分块
- 使用Hibernate来看看
- Android Studio生成APK自动追加版本号
- 虽然微不足道但是很有用的JAVA基础—数据类型及其转换
- bzoj 1026(数位dp)
- CentOS6.5在VMware的安装笔记
- C如何写窗体程序
- Java基础学习
- redis集群部署
- 使用OpenCV进行标定(Python)
- WebView性能优化的那些事儿……
- 算法与数据结构学习之——大数字四则运算
- Codeforces Round #438 (Div. 1 + Div. 2 combined) ABCDF