[SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)
题目大意:给定$n$个正整数,求$[l,r]$中第$k$小的”好数“。$l,r\leqslant10^{18},n\leqslant62$,出现的其他数均$\leqslant10^{50}$
好数定义为它至少包含这$n$个数中的一个
题解:二分答案,数位$DP$+$AC$自动机上$DP$,求一个数是第几个好数可以见[文本生成器](https://www.cnblogs.com/Memory-of-winter/p/11305126.html)
卡点:无
C++ Code:
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <queue>
const int maxn = 20 * 1000;long long n, k, l, r;
long long f[20][maxn];
namespace AC {int nxt[maxn][10], fail[maxn], idx = 1;bool End[maxn];void insert(std::string s) {int p = 1;for (char ch : s) {if (nxt[p][ch & 15]) p = nxt[p][ch &15];else p = nxt[p][ch & 15] = ++idx;}End[p] = true;}void build() {std::queue<int> q;for (int i = 0; i < 10; ++i)if (nxt[1][i]) fail[nxt[1][i]] = 1, q.push(nxt[1][i]);else nxt[1][i] = 1;while (!q.empty()) {int u = q.front(); q.pop();for (int i = 0; i < 10; ++i)if (nxt[u][i]) {fail[nxt[u][i]] = nxt[fail[u]][i];End[nxt[u][i]] |= End[fail[nxt[u][i]]];q.push(nxt[u][i]);} else nxt[u][i] = nxt[fail[u]][i];}}int num[20], tot;long long calc(int x, int lim, int lead, int p) {if (!x) return lead;long long F = f[x][p];if (~F && !lim && lead) return F;F = 0;for (int i = lim ? num[x] : 9, up = 1; ~i; --i, up = 0)if (!End[nxt[p][i]])F += calc(x - 1, lim && up, lead || i, nxt[p][i]);if (~F && !lim && lead) f[x][p] = F;return F;}long long solve(long long x) {if (!x) return 0;long long X = x;tot = 0;while (x) num[++tot] = x % 10, x /= 10;return X - calc(tot, 1, 0, 1);}long long query(long long k, long long L, long long R) {long long base = solve(L - 1), l = L, r = R, ans = L;while (l <= r) {long long mid = l + r >> 1, t = solve(mid) - base;if (t >= k) r = mid - 1, ans = mid;else l = mid + 1;}if (solve(ans) - base != k) return -1;return ans;}
}int main() {std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);memset(f, -1, sizeof f);std::cin >> l >> r >> k >> n;for (int i = 0; i < n; ++i) {static std::string s;std::cin >> s;AC::insert(s);}AC::build();std::cout << AC::query(k, l, r) << '\n';return 0;
}
转载于:https://www.cnblogs.com/Memory-of-winter/p/11308834.html
[SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)相关推荐
- 广播计算机应用基础,2019年秋季考试《计算机应用基础》在线考核试题 广播幻灯片操作应选择的功能区是...
2019年秋季考试<计算机应用基础>在线考核试题 广播幻灯片操作应选择的功能区是 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14. ...
- 天大计算机应用基础试题答案,天大2019年秋季考试《计算机应用基础》在线考核试题100分答案...
2019年秋季考试<计算机应用基础>在线考核试题 共题,总分:100分 时间:57分24秒 答题中 分 一.单选题共50题,100分 1 2分 在Windows中使用Ait+Tab键的作用 ...
- 2019年秋季计算机应用基础,天大2019年秋季考试《计算机应用基础》在线考核试题【满分答案】...
2019年秋季考试<计算机应用基础>在线考核试题-0064 试卷总分:100 得分:100 一.单选题 (共 50 道试题,共 100 分) 1.运算器.控制器和寄存器组成了微机的( ) ...
- 微型计算机互联的主要目的,2019年自学考试计算机应用基础试题(5)
2019年4月自考报名已经拉开序幕,同学们可以开始准备自考复习,下面是2019年自学考试计算机应用基础试题(5),了解更多自学考试资讯请锁定自学考试网,更有海量模拟试题,精品复习资料等你来体验! 1填 ...
- 使用计算机打印汉字文档是汉字答案,天大2019年秋季考试《计算机应用基础》在线考核试题【满分答案】...
2019年秋季考试<计算机应用基础>在线考核试题-0064 试卷总分:100 得分:100 一.单选题 (共 50 道试题,共 100 分) 1.运算器.控制器和寄存器组成了微机的( ) ...
- 中国大学MOOC-陈越、何钦铭-数据结构-2019夏期中考试+解析
中国大学MOOC-陈越.何钦铭-数据结构-2019夏期中考试+解析 判断题 1-1 用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关. (3分)TRUE [解析]:邻接矩阵是用一 ...
- 自考18年4月计算机应用基础,2019年自学考试计算机应用基础试题(18)
2019年4月自考报名已经拉开序幕,同学们可以开始准备自考复习,下面是2019年自学考试计算机应用基础试题(18),了解更多自学考试资讯请锁定自学考试网,更有海量模拟试题,精品复习资料等你来下载! 1 ...
- 计算机excl知识题,2019职称计算机考试Excel模拟题及答案(1.18)
[导语]2019年职称计算机考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019职称计算机考试Excel模拟题及答案(1.18),把握机会抓紧练习吧.如想获取更多职称计 ...
- 计算机专业知识多选题证监会,2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲...
2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲由国家公务员考试网公告解读栏目由提供,更多关于2019国家公务员考试大纲,计算机类国考考试大纲,证监会国考考试大,国家公务员考试公告解读的 ...
最新文章
- pyqt5界面与逻辑分离--信号槽的装饰器实现方式
- Lua 代码编写技巧
- C结构体工具DirectStruct(综合示例二)
- batch insert 1 million datas into mysql
- html 纵向选项卡,竖直选项卡式面板的实现_html/css_WEB-ITnose
- ini_set ini_get 可操作配置参数列表 设置默认编码等
- 大中小型项目管理的区别
- (转)DPDK内存管理 04 ---- rte_malloc内存管理
- Windows下iperf使用(cmd窗口)三种方法
- python上传文件方法总结
- EDR BYPASS
- pycharm界面代码区域无法编辑的解决方法
- clr 80004005
- 深入浅出TCP三次握手 (多图详解)
- P2597 [ZJOI2012]灾难(支配树)
- (附源码)计算机毕业设计SSM教师教学质量评价系统
- linux删除带用户的群组,Linux账号群组删除等相关操作
- QEMU(1) - QOM
- Java,微信交流学习群
- unity引擎之Rotation旋转
热门文章
- 罗翔 ---- 理想主义的花
- php接收get数组数据,php-如何从wordpress数据库中获取数组值get_results
- 后序遍历的非递归算法python_Python非递归实现二叉树的后续遍历
- 向Redis中存入JSON格式数据
- 一文掌握 Linux 性能分析之网络篇(续)
- 加拿大程序员趣闻系列 1/N
- REHL 6 安装指南
- SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
- C#中new的用法,及与override的区别
- 091115 T UI生成的类