P2657 [SCOI2009]windy数

题目描述

\(\tt{windy}\)定义了一种\(\tt{windy}\)数。不含前导零且相邻两个数字之差至少为\(2\)的正整数被称为\(\tt{windy}\)数。 \(\tt{windy}\)想知道,

在\(A\)和\(B\)之间,包括\(A\)和\(B\),总共有多少个\(\tt{windy}\)数?

输入输出格式

输入格式:

包含两个整数,\(A\) \(B\)。

输出格式:

一个整数

说明

\(100\%\)的数据,满足 \(1 \le A \le B \le 2000000000\) 。


跟着咕咕日报了解了一下套路的数位\(\tt{DP}\)的写法,发现之前自己\(\tt{yy}\)的太\(\tt{naive}\)啦

思路是把前导\(0\)和高位限制放到记搜里面做参数直接解决。


Code:

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. int dp[12][10],a[12];
  5. int dfs(int dep,int pre,int lead,int limit)//第几位,上一位的数字,前导0,高位是否有限制
  6. {
  7. if(~dp[dep][pre]&&!lead&&(!limit||!dep)) return dp[dep][pre];
  8. if(dep==0) return 0;
  9. int res=limit?a[dep]:9,ret=0;
  10. for(int i=0;i<=res;i++)
  11. {
  12. if(!lead&&abs(pre-i)<2) continue;
  13. if(!i&&lead) ret+=dfs(dep-1,i,lead,limit&i==res);
  14. //选0且有前导0,仍然有
  15. if(i&&lead) ret+=dfs(dep-1,i,!lead,limit&i==res);
  16. //选0且无前导0,没了
  17. if(!lead) ret+=dfs(dep-1,i,lead,limit&i==res);
  18. //无前导0
  19. }
  20. if(!limit&&!lead) dp[dep][pre]=ret;
  21. return ret;
  22. }
  23. int solve(int n)
  24. {
  25. if(!n) return 0;
  26. int cnt=0;
  27. for(int i=1;n;i++) a[++cnt]=n%10,n/=10;
  28. return dfs(cnt,0,1,1);
  29. }
  30. int main()
  31. {
  32. int a,b;
  33. memset(dp,-1,sizeof(dp));
  34. for(int i=0;i<=9;i++) dp[0][i]=1;
  35. scanf("%d%d",&a,&b);
  36. printf("%d\n",solve(b)-solve(a-1));
  37. return 0;
  38. }

2018.11.6

洛谷 P2657 [SCOI2009]windy数 解题报告的更多相关文章

  1. 洛谷——P2657 [SCOI2009]windy数

    P2657 [SCOI2009]windy数 题目大意: windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和 ...

  2. C++ 洛谷 P2657 [SCOI2009]windy数 题解

    P2657 [SCOI2009]windy数 同步数位DP 这题还是很简单的啦(差点没做出来 个位打表大佬请离开(包括记搜),我这里讲的是DP!!! 首先Cal(b+1)-Cal(a),大家都懂吧(算 ...

  3. 洛谷P2657 [SCOI2009]windy数 [数位DP,记忆化搜索]

    题目传送门 windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个win ...

  4. [洛谷P2657][SCOI2009]windy数

    题目大意:不含前导零且相邻两个数字之差至少为$2$的正整数被称为$windy$数.问$[A, B]$内有多少个$windy$数? 题解:$f_{i, j}$表示数有$i$位,最高位为$j$(可能为$0 ...

  5. 洛谷P2657 [SCOI2009]windy数 题解 数位DP

    题目链接:https://www.luogu.com.cn/problem/P2657 题目大意:找区间 \([A,B]\) 范围内 不含前导零 且 相邻两个数字之差至少为2 的正整数的个数. 题目分 ...

  6. 洛谷 P2657 [SCOI2009]windy数

    题意简述 求l~r之间不含前导零且相邻两个数字之差至少为2的正整数的个数 题解思路 数位DP 代码 #include <cstdio> #include <cstring> # ...

  7. BZOJ1026或洛谷2657 [SCOI2009]windy数

    BZOJ原题链接 洛谷原题链接 简单的数位\(DP\),套模板就好. #include<cstdio> #include<cstring> using namespace st ...

  8. [BZOJ1026][SCOI2009]windy数 解题报告|数位dp

    Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 一直 ...

  9. 洛谷 P1430 序列取数 解题报告

    P1430 序列取数 题目描述 给定一个长为\(n\)的整数序列\((n<=1000)\),由\(A\)和\(B\)轮流取数(\(A\)先取).每个人可从序列的左端或右端取若干个数(至少一个), ...

随机推荐

  1. ogg的安装配置 配置双向同步(含DDL)

    第一部分 先配置单向同步(含DDL) 一 源端安装GoldenGate 创建用户 创建目录 mkdir -p /opt/ogg chmod -R 777 /opt/ogg chown -R oracl ...

  2. facebook原生广告添加adchoice图标

    1.在需要显示adchoice的地方添加一个textview: <LinearLayout android:id="@+id/ad_ic_action" android:la ...

  3. WeTest功能优化第1期:截图960px,云真机映射功能了解

    第1期功能优化目录 [全线产品测试截图优化]安卓机型测试截图分辨率上升至960px [云真机新增Android 9]最新安卓系统,等你pick [云真机新增键盘映射功能]电脑键盘码字,云真机同步显示  ...

  4. 百度地图标注及结合ECharts图谱数据可视化

    本示例中根据企业位置经纬度,在页面右侧百度地图中标注企业名称.同时页面左侧ECharts图谱饼状图用于统计企业行业与注册资本.当右侧百度地图缩放拖拽,左侧ECharts图谱根据右侧地图上出现的企业动态 ...

  5. hdu1217Arbitrage(floyd+map)

    Arbitrage Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total S ...

  6. web自动化原理揭秘

    做过两年自动化测试的小伙伴说web自动化测试真的不难,无非就是一些浏览器操作,页面元素操作,常规的情况很容易处理,再学一学特殊元素的处理,基本就能应付项目的测试了. 这个话倒没错,但是真正要学好自动化 ...

  7. 普通Java类获取Spring的Bean的方法

    普通Java类获取Spring的Bean的方法 在SSH集成的前提下.某些情况我们需要在Action以外的类中来获得Spring所管理的Service对象. 之前我在网上找了好几好久都没有找到合适的方 ...

  8. net::ERR_ABORTED ,引入js文件出现报错的解决方法

    在head头里面添加 <mvc:annotation-driven enable-matrix-variables="true"></mvc:annotation ...

  9. Discover the Web(栈模拟)

    Description Standard web browsers contain features to move backward and forward among the pages rece ...

  10. [codecademy]html&css

    1. HTML is the language used to create the web pages you visit everyday. It provides a logical way t ...