【洛谷P2657】[SCOI2009] windy数
最近学习了一下数位DP
感觉记忆化搜索是比较好理解的
这篇博客对我有一定的启发https://www.cnblogs.com/zbtrs/p/6106783.html

windy数
显然这是一道数位DP的题
要注意的地方是前导全零时的状态转移
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define abs(i) ((i)>0?(i):(-i))
int a,b,maxx[],dp[][]; //dp[i][j]前i位 第i-1位是j的方案数
int dfs(int len,int lastnum,bool shangxian,bool O){
if(len==) return O^;
if(!shangxian&&dp[len][lastnum])
return dp[len][lastnum];
int cnt=,M=shangxian?maxx[len]:;
for(int i=;i<=M;i++){
if(!O&&abs(lastnum-i)<) continue; //前面都是前导0,该位不受其限制
cnt+=dfs(len-,i,shangxian&&i==M,O&&i==);
}
if(!shangxian&&!O) dp[len][lastnum]=cnt; //前面都是前导0,不会限制到下一位,不能记忆化
return cnt;
}
int solve(int x){
memset(maxx,,sizeof(maxx));
memset(dp,,sizeof(dp)); //注意要清空数组
int k=;
while(x){
maxx[++k]=x%;
x/=;
}
return dfs(k,-,,);
}
int main()
{
scanf("%d%d",&a,&b);
printf("%d",solve(b)-solve(a-));
return ;
}
【洛谷P2657】[SCOI2009] windy数的更多相关文章
- 洛谷 P2657 [SCOI2009]windy数 解题报告
P2657 [SCOI2009]windy数 题目描述 \(\tt{windy}\)定义了一种\(\tt{windy}\)数.不含前导零且相邻两个数字之差至少为\(2\)的正整数被称为\(\tt{wi ...
- 洛谷——P2657 [SCOI2009]windy数
P2657 [SCOI2009]windy数 题目大意: windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和 ...
- C++ 洛谷 P2657 [SCOI2009]windy数 题解
P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...
- 洛谷P2657 [SCOI2009]windy数 [数位DP,记忆化搜索]
题目传送门 windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个win ...
- [洛谷P2657][SCOI2009]windy数
题目大意:不含前导零且相邻两个数字之差至少为$2$的正整数被称为$windy$数.问$[A, B]$内有多少个$windy$数? 题解:$f_{i, j}$表示数有$i$位,最高位为$j$(可能为$0 ...
- 洛谷P2657 [SCOI2009]windy数 题解 数位DP
题目链接:https://www.luogu.com.cn/problem/P2657 题目大意:找区间 \([A,B]\) 范围内 不含前导零 且 相邻两个数字之差至少为2 的正整数的个数. 题目分 ...
- 洛谷 P2657 [SCOI2009]windy数
题意简述 求l~r之间不含前导零且相邻两个数字之差至少为2的正整数的个数 题解思路 数位DP 代码 #include <cstdio> #include <cstring> # ...
- BZOJ1026或洛谷2657 [SCOI2009]windy数
BZOJ原题链接 洛谷原题链接 简单的数位\(DP\),套模板就好. #include<cstdio> #include<cstring> using namespace st ...
- luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索
题目链接 luogu P2657 [SCOI2009]windy数 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码 #include<cstdio> #include<a ...
- P2657 [SCOI2009]windy数
P2657 [SCOI2009]windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B ...
随机推荐
- TOJ 3744 Transportation Costs
描述 Minya Konka decided to go to Fuzhou to participate in the ACM regional contest at their own expen ...
- OpenLayers 案例一
序 OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问. 例子 <!doctype html> <htm ...
- WPF 父子窗体联动
问题: 近段时间,由于项目上的一些原因,设计到在WPF项目使用引用COM组件的问题,部分WPF元素浮动在COM组件之上,并且实现拖.停靠.放大等功能(子窗体不要求等比缩放,只要位置跟随主窗体即可),如 ...
- nyoj 269——VF——————【dp】
VF 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Vasya is the beginning mathematician. He decided to make ...
- js 用简单案例举模态对话框弹出
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 【ubuntu】更换下载源
ubuntu,我们在使用apt新装软件的时候,会使用官方的网站去下载软件,但是会因为国内的转接点太多,而导致下载的速度非常慢 ,我们可以通过换成一些中间的节点来进行下载,比如阿里源,中科大源,清华源等 ...
- hihoCoder题目之Magic Box
#include <iostream> #include <cmath> #include <cstdio> using namespace std; void s ...
- NPOI之C#下载Excel
Java中这个类库叫POI,C#中叫NPOI,很多从Java一直到.Net平台的类库为了区别大部分都是在前面加个N,比如Hibernate和NHibernate. npoi下载地址 一.使用NPOI下 ...
- Thrift笔记(六)--单端口 多服务
多个服务,使用监听一个端口.先上一个demo Test.thrift namespace java com.gxf.thrift enum RequestType { SAY_HELLO, //问好 ...
- [PAMI 2018] Differential Geometry in Edge Detection: accurate estimation of position, orientation and curvature
铛铛铛,我的第一篇文章终于上线了,过程曲折,太不容易了--欢迎访问--- https://ieeexplore.ieee.org/document/8382271/ 后面有需要的话可以更新一下介绍,毕 ...