思路:
  数位dp,设f[i][j]为以i为首元素, 长度为j, 的合题方案种数。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
using namespace std;
const int maxn = 40;
long long f[maxn][maxn];
long long ppow10[maxn];
long long getws(long long x){for(int i = 18; i >= 0; --i){if(x >= ppow10[i])return i + 1;}return 1;
}
long long getxk(long long x, long long k){if(k > getws(x))    return 0;return (x / ppow10[k - 1]) % 10;
}
void init(){ppow10[0] = 1;for(long long i=1; i<=20; ++i)ppow10[i] = ppow10[i - 1] * 10;    for(int i=0; i<10; ++i)f[i][1] = 1;        for(long long j=2; j<=11; ++j)for(long long i=0; i<10; ++i)for(long long k = 0; k<10; ++k)if(k <= i - 2 || k >= i + 2)f[i][j] += f[k][j-1];
}
long long DP(long long x, long long ws){long long ans = 0;for(long long i = 1; i < ws; ++i)for(long long j = 1; j < 10; ++j)ans += f[j][i];    for(long long i = 1; i < getxk(x, ws); ++i)ans += f[i][ws];            for(long long i = ws - 1; i >= 1; --i){for(long long j = 0; j < getxk(x, i); ++j)if(j <= getxk(x, i + 1) - 2 || j >= getxk(x, i + 1) + 2)ans += f[j][i];if(getxk(x, i) > getxk(x, i + 1) - 2 && getxk(x, i) < getxk(x, i + 1) + 2)return ans;        }return ans;
}
int main(void)
{init();long long a, b;cin >> a >> b;cout << DP(b + 1, getws(b + 1)) - DP(a, getws(a)) << endl;
}

转载于:https://www.cnblogs.com/junk-yao-blog/p/9495374.html

loj10165. 「一本通 5.3 例 3」Windy 数相关推荐

  1. 【C++】「一本通 1.1 例 4」加工生产调度

    「一本通 1.1 例 4」加工生产调度 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1425 LibreOJ ...

  2. LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】

    10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...

  3. 【C++】「一本通 1.1 例 2」种树

    「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...

  4. #10001. 「一本通 1.1 例 2」种树

    #10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...

  5. 【C++】「一本通 1.1 例 5」智力大冲浪

    「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...

  6. Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)

    题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...

  7. #10003. 「一本通 1.1 例 4」加工生产调度(贪心)

    加工生产调度 题目描述 某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加工. 某个产品i在A.B两车间加工的时间分别为Ai.Bi.询问怎样安排这 ...

  8. 「一本通 4.1 例 3」校门外的树 (loj10115)

    题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作: K=1,读入 l,r表示在 l 到 r 之间种上 ...

  9. loj10157. 「一本通 5.2 例 5」皇宫看守

    思路: 例四是覆盖全部边,dp两个状态,例五是覆盖全部点,dp三个状态. #include<cstdio> #include<iostream> #include<cst ...

最新文章

  1. Kinect开发笔记之四检测并调试Kinect设备
  2. DevOps之持续集成SonarQube代码质量扫描
  3. vue 代理设置 访问图片_详解Vue源码之数据的代理访问
  4. MySQL之慢查询日志和连接管理
  5. 站内搜索--3--之Lucene.Net使用
  6. 什么是张量(tensor)
  7. Linux—文件系统
  8. S2SH新手框架结构的准备工作只需要导入这些文件
  9. Restful规范-开发api接口
  10. 迈卡名车茂深度访谈信达名车——宋丙刚:自信坚韧 坚持不懈
  11. iOS开发-class_ro_t和class_rw_t的区别
  12. Linux——clamAV查杀病毒与防护
  13. 如何运营好微信公众号?如何利用微信公众号盈利?
  14. Mvp+OkHttp+XRecyclerView------上拉加载下拉刷新
  15. 组合数据类型(集合)
  16. Oracle 自动存储管理 (ASM)
  17. echarts饼图圆环图数据为0时字体重叠
  18. codeforces 332B B. Maximum Absurdity(rmq)
  19. adb 连接手机 cannot connect to 192.168.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
  20. yapi接口导出为word_还在手工写接口测试文档,已经out了

热门文章

  1. Linux(三) 运行级别
  2. Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态
  3. DSP 的双缓冲串口程序设计
  4. 【Linux】一步一步学Linux——gdb命令(258)
  5. html 问号标签 提示cursor: help,css之cursor,float
  6. html jquery 不能自动完成,在jQuery UI自动完成中使用HTML
  7. Python入门--基本输入输出
  8. Codeforces 988E. Divisibility by 25
  9. 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释
  10. 每天一道LeetCode-----最长无重复子串