题目大意:给定$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考试)相关推荐

  1. 广播计算机应用基础,2019年秋季考试《计算机应用基础》在线考核试题 广播幻灯片操作应选择的功能区是...

    2019年秋季考试<计算机应用基础>在线考核试题 广播幻灯片操作应选择的功能区是 (12页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14. ...

  2. 天大计算机应用基础试题答案,天大2019年秋季考试《计算机应用基础》在线考核试题100分答案...

    2019年秋季考试<计算机应用基础>在线考核试题 共题,总分:100分 时间:57分24秒 答题中 分 一.单选题共50题,100分 1 2分 在Windows中使用Ait+Tab键的作用 ...

  3. 2019年秋季计算机应用基础,天大2019年秋季考试《计算机应用基础》在线考核试题【满分答案】...

    2019年秋季考试<计算机应用基础>在线考核试题-0064 试卷总分:100  得分:100 一.单选题 (共 50 道试题,共 100 分) 1.运算器.控制器和寄存器组成了微机的( ) ...

  4. 微型计算机互联的主要目的,2019年自学考试计算机应用基础试题(5)

    2019年4月自考报名已经拉开序幕,同学们可以开始准备自考复习,下面是2019年自学考试计算机应用基础试题(5),了解更多自学考试资讯请锁定自学考试网,更有海量模拟试题,精品复习资料等你来体验! 1填 ...

  5. 使用计算机打印汉字文档是汉字答案,天大2019年秋季考试《计算机应用基础》在线考核试题【满分答案】...

    2019年秋季考试<计算机应用基础>在线考核试题-0064 试卷总分:100  得分:100 一.单选题 (共 50 道试题,共 100 分) 1.运算器.控制器和寄存器组成了微机的( ) ...

  6. 中国大学MOOC-陈越、何钦铭-数据结构-2019夏期中考试+解析

    中国大学MOOC-陈越.何钦铭-数据结构-2019夏期中考试+解析 判断题 1-1 用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关. (3分)TRUE [解析]:邻接矩阵是用一 ...

  7. 自考18年4月计算机应用基础,2019年自学考试计算机应用基础试题(18)

    2019年4月自考报名已经拉开序幕,同学们可以开始准备自考复习,下面是2019年自学考试计算机应用基础试题(18),了解更多自学考试资讯请锁定自学考试网,更有海量模拟试题,精品复习资料等你来下载! 1 ...

  8. 计算机excl知识题,2019职称计算机考试Excel模拟题及答案(1.18)

    [导语]2019年职称计算机考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019职称计算机考试Excel模拟题及答案(1.18),把握机会抓紧练习吧.如想获取更多职称计 ...

  9. 计算机专业知识多选题证监会,2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲...

    2019年国家公务员考试中国证监会(计算机类)专业科目考试大纲由国家公务员考试网公告解读栏目由提供,更多关于2019国家公务员考试大纲,计算机类国考考试大纲,证监会国考考试大,国家公务员考试公告解读的 ...

最新文章

  1. pyqt5界面与逻辑分离--信号槽的装饰器实现方式
  2. Lua 代码编写技巧
  3. C结构体工具DirectStruct(综合示例二)
  4. batch insert 1 million datas into mysql
  5. html 纵向选项卡,竖直选项卡式面板的实现_html/css_WEB-ITnose
  6. ini_set ini_get 可操作配置参数列表 设置默认编码等
  7. 大中小型项目管理的区别
  8. (转)DPDK内存管理 04 ---- rte_malloc内存管理
  9. Windows下iperf使用(cmd窗口)三种方法
  10. python上传文件方法总结
  11. EDR BYPASS
  12. pycharm界面代码区域无法编辑的解决方法
  13. clr 80004005
  14. 深入浅出TCP三次握手 (多图详解)
  15. P2597 [ZJOI2012]灾难(支配树)
  16. (附源码)计算机毕业设计SSM教师教学质量评价系统
  17. linux删除带用户的群组,Linux账号群组删除等相关操作
  18. QEMU(1) - QOM
  19. Java,微信交流学习群
  20. unity引擎之Rotation旋转

热门文章

  1. 罗翔 ---- 理想主义的花
  2. php接收get数组数据,php-如何从wordpress数据库中获取数组值get_results
  3. 后序遍历的非递归算法python_Python非递归实现二叉树的后续遍历
  4. 向Redis中存入JSON格式数据
  5. 一文掌握 Linux 性能分析之网络篇(续)
  6. 加拿大程序员趣闻系列 1/N
  7. REHL 6 安装指南
  8. SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
  9. C#中new的用法,及与override的区别
  10. 091115 T UI生成的类