bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写)
数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件
只要出题人不刻意去卡多一个$log$什么的(当然${log_2{(long long)}}$就有$60$)
方法显然还是非常丰富的 找一些自己写得比较顺的方法会了就行
------------------------------------------------------------------------------------------------------------------------------
比如windy数这题 我的做法便是先从低位到高位先预处理出有x位 最高位为y时有多少满足题意的数
然后再从高位到低位扫一遍 分最高的几位是否与限制的最高的几位相等去分情况讨论即可
#include <bits/stdc++.h> using namespace std; int f[11][10],lim[11]; void prepare() {for(int i=0;i<=9;++i)f[1][i]=1;for(int i=2;i<=10;++i)for(int j=0;j<=9;++j)for(int k=0;k<=9;++k)if(abs(j-k)>=2)f[i][j]+=f[i-1][k]; } int calc(int x) {if(!x)return 0;int top=0,re=0;while(x){lim[++top]=x%10;x/=10;}for(int i=top;i;--i){if(top-i>=2&&abs(lim[i+1]-lim[i+2])<=1)break;for(int j=0+(i==top);j<lim[i]+(i==1);++j)if(i==top||abs(j-lim[i+1])>=2)re+=f[i][j];}for(int i=top-1;i;--i)for(int j=1;j<=9;++j)re+=f[i][j];return re; } int main() {int a,b;prepare();scanf("%d%d",&a,&b);printf("%d",calc(b)-calc(a-1));return 0; }
不过这题限制条件只是和相邻的位有关 后面应该会遇到不少限制条件更难表示与讨论的题目
转载于:https://www.cnblogs.com/sagitta/p/4748016.html
bzoj 1026: [SCOI2009]windy数 数位DP算法笔记相关推荐
- 洛谷 P2657 [SCOI2009] windy数 数位DP
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...
- bzoj 1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7688 Solved: 3470 [Submit][S ...
- bzoj:1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7982 Solved: 3593 Descriptio ...
- BZOJ 1026 [SCOI2009]windy数
1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...
- 【bzoj1026】[SCOI2009]windy数 数位dp
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 输入 包含两个整数 ...
- BZOJ1026 [SCOI2009]windy数 数位dp
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1026 题目概括 求区间[A,B]中有多少数满足下面的条件. 条件:该数相邻两位之差不小于2. 题解 ...
- 题解 BZOJ1026 luogu P2657 [SCOI2009]windy数 数位DP
BZOJ & luogu 看到某大佬AC,本蒟蒻也决定学习一下玄学的数位$dp$ (以上是今年3月写的话(叫我鸽神$qwq$)) 思路:数位$DP$ 提交:2次 题解:(见代码) #inclu ...
- bzoj 1026: [SCOI2009]windy数
Time Limit: 1 Sec Memory Limit: 162 MB Submit: 9998 Solved: 4629 [Submit][Status][Discuss] Descripti ...
- P2657 [SCOI2009]windy数(数位dp)
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...
最新文章
- 使用NetBeans IDE开发C程序
- android listview显示数据库内容
- 自由职业半年,我又滚回职场了...
- 2.18比赛(T2,T3留坑)
- Redis 架构之 cluster
- 用notepad++打造自己的C/C++语言IDE --是时候和DOS屏幕说再见了
- 程序员“离职小技巧”
- C++基础教程之数据是如何封装的
- jQuery AJAX实现调用页面后台方法
- 携程基于云的软呼叫中心及客服平台架构实践\n
- mesa3d源代码阅读笔记
- Java简介:Java是什么?及Java语言的特点
- 儒豹手机搜索发布2008年各频道关键词排行榜
- 基于matlab的神经网络设计,matlab神经网络应用设计
- 探索未来|一文看懂小米年度技术峰会 · 软件技术专场
- 电子书格式转换 Epubor Ultimate 7 附注册机
- 2020用户行为分析领域最具商业合作价值企业盘点
- 文件的后缀名怎样重命名,重命名为大写字母
- 记一次华为2288H V5服务器安装Ubuntu18.04操作系统(详细流程)
- STM32用ST-link下载程序
热门文章
- Windows API获取系统配置文件的配置参数
- 职业生涯第二年回顾(2011.2~2012.2)
- JS高级 - 面向对象5(继承,引用)
- Linux软件包管理基本操作入门
- 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
- pymongo TypeError
- silverlight 客户端之间的通讯
- b站编程课程资源汇总
- 修改/etc/sudoers权限后的补救方法
- 【咸鱼教程】基于系统时间的计时器DateTimer(不受FPS影响)