loj10165. 「一本通 5.3 例 3」Windy 数
思路:
数位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 数相关推荐
- 【C++】「一本通 1.1 例 4」加工生产调度
「一本通 1.1 例 4」加工生产调度 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1425 LibreOJ ...
- LibreOJ10082. 「一本通 3.3 例 1」Word Rings【二分+SPFA】
10082. 「一本通 3.3 例 1」Word Rings [题目描述] 传送门 [题解] 将一个字符串看成一条边,字符两端的字符看成节点,长度看成权值.二分枚举答案,最后SPFA刷正环,因为只要有 ...
- 【C++】「一本通 1.1 例 2」种树
「一本通 1.1 例 2」种树 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [解析] [代码] [来源] 一本通题库-1423 LibreOJ-10001 vjud ...
- #10001. 「一本通 1.1 例 2」种树
#10001. 「一本通 1.1 例 2」种树 满足n个区间种树的要求,求最少种多少棵数 思路 按照区间的尾巴来排序,因为如果区间有重叠的种在第一个区间的尾巴可以使得种树更少,所有每次始从尾巴开始种树 ...
- 【C++】「一本通 1.1 例 5」智力大冲浪
「一本通 1.1 例 5」智力大冲浪 [来源] [题目描述] [输入格式] [输出格式] [输入样例] [输出样例] [数据范围] [解析] [代码] [来源] 一本通题库-1426 LibreOJ- ...
- Loj 10115 「一本通 4.1 例 3」校门外的树 (树状数组)
题目链接:https://loj.ac/problem/10115 题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的 ...
- #10003. 「一本通 1.1 例 4」加工生产调度(贪心)
加工生产调度 题目描述 某工厂收到了n个产品的订单,这n个产品分别在A.B两个车间加工,并且必须先在A车间加工后才可以到B车间加工. 某个产品i在A.B两车间加工的时间分别为Ai.Bi.询问怎样安排这 ...
- 「一本通 4.1 例 3」校门外的树 (loj10115)
题目描述 原题来自:Vijos P1448 校门外有很多树,学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两种操作: K=1,读入 l,r表示在 l 到 r 之间种上 ...
- loj10157. 「一本通 5.2 例 5」皇宫看守
思路: 例四是覆盖全部边,dp两个状态,例五是覆盖全部点,dp三个状态. #include<cstdio> #include<iostream> #include<cst ...
最新文章
- Kinect开发笔记之四检测并调试Kinect设备
- DevOps之持续集成SonarQube代码质量扫描
- vue 代理设置 访问图片_详解Vue源码之数据的代理访问
- MySQL之慢查询日志和连接管理
- 站内搜索--3--之Lucene.Net使用
- 什么是张量(tensor)
- Linux—文件系统
- S2SH新手框架结构的准备工作只需要导入这些文件
- Restful规范-开发api接口
- 迈卡名车茂深度访谈信达名车——宋丙刚:自信坚韧 坚持不懈
- iOS开发-class_ro_t和class_rw_t的区别
- Linux——clamAV查杀病毒与防护
- 如何运营好微信公众号?如何利用微信公众号盈利?
- Mvp+OkHttp+XRecyclerView------上拉加载下拉刷新
- 组合数据类型(集合)
- Oracle 自动存储管理 (ASM)
- echarts饼图圆环图数据为0时字体重叠
- codeforces 332B B. Maximum Absurdity(rmq)
- adb 连接手机 cannot connect to 192.168.x.xx:5555: 由于目标计算机积极拒绝,无法连接。 (10061)
- yapi接口导出为word_还在手工写接口测试文档,已经out了
热门文章
- Linux(三) 运行级别
- Java面向对象(二)面向对象的特征 --- 封装 、 继承、 多态
- DSP 的双缓冲串口程序设计
- 【Linux】一步一步学Linux——gdb命令(258)
- html 问号标签 提示cursor: help,css之cursor,float
- html jquery 不能自动完成,在jQuery UI自动完成中使用HTML
- Python入门--基本输入输出
- Codeforces 988E. Divisibility by 25
- 51 nod 1521 一维战舰 时间复杂度O(n),同 Codeforces 567D. One-Dimensional Battle Ships 有详细注释
- 每天一道LeetCode-----最长无重复子串