博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1026 windy数
阅读量:6488 次
发布时间:2019-06-24

本文共 990 字,大约阅读时间需要 3 分钟。

思路:

数位dp

代码:

#include
using namespace std;#define LL long long #define pb push_back#define mem(a, b) memset(a, b, sizeof(a))int a[15];int dp[15][15];int dfs(int pos, int pre, bool limit, bool zero) { if (pos == -1) return 1; if(!limit && !zero && ~dp[pos][pre]) return dp[pos][pre]; int top = limit ? a[pos] : 9; int ans = 0; for (int i = 0; i <= top; i++) { if(zero){ ans += dfs(pos - 1, i, limit&&i==a[pos], zero&&i==0); } else { if(abs(pre - i) <= 1) continue; ans += dfs(pos - 1, i, limit&&i==a[pos], zero&&i==0); } } if(!limit && !zero) dp[pos][pre] = ans; return ans;}int solve(int n) { int cnt = 0; mem(a, 0); while (n) { a[cnt++] = n % 10; n /= 10; } return dfs(9, 0, 1, 1);} int main() { int a, b; scanf("%d%d", &a, &b); mem(dp, -1); printf("%d\n",solve(b) - solve(a - 1)); return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/8818775.html

你可能感兴趣的文章
AjaxFileUploader上传插件 兼容性好
查看>>
[更新]Luke.Net for Pangu 盘古分词版更新
查看>>
【原】探索css换行
查看>>
Android屏幕下方的Tab菜单制作
查看>>
用gdb调试程序笔记: 以段错误(Segmental fault)为例_哎呀呀!_百度空间
查看>>
MFC绘图基础 .
查看>>
Enable ITDS to use SSL/TLS
查看>>
Hadoop权威指南--读书笔记
查看>>
frm-40700 calendar_wrote_date
查看>>
CyanogenMod | Android Community Rom based on Ice Cream Sandwich
查看>>
POJ 3767
查看>>
权限与命令间的关系(转)
查看>>
python3中bytes与string的互相转换
查看>>
高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案
查看>>
mySql GUI 设计工具
查看>>
this关键字小结
查看>>
番茄工作法_Feisky_新浪博客
查看>>
数据库访问 threadlocal模式[参考easydbo]
查看>>
第十八章 24友元的方式重载输出运算符
查看>>
动态链接库dll,静态链接库lib, 导入库lib
查看>>