题意

给定 \(n\) 个在数轴的区间 \([l_1,r_1],[l_2,r_2],...,[l_n,r_n]\)。

定义 \(I(x)\) 为所有包含 \([x,x+1]\) 的区间形成的集合,即 \(I(x)=\{k \mid [x,x+1] \subseteq [l_k,r_k] \}\)。

称一个数列 \(S\) 是好的当且仅当存在一个整数 \(x\) 满足 \(I(x)\) 中的元素从小到大排序后等于 \(S\) 且 \(S\) 的长度非 \(0\)。

给定 \(k\),求字典序第 \(k\) 小的好的数列。如果好数列的数量不足 \(k\) 个,输出 -1

\(1 \le n \le 3 \times 10^5,1 \le k \le 10^{18},0 \le l_i < r_i \le 10^9\)。

题解

考试的题目。然而我并不会……

很羡慕 positive1 大师,1h 就切掉了,而我想了 2h 仍然毫无头绪……是套路见少了,还是思维质量不行,或是二者兼有?


显然可以先离散化,那么就是 \(2n\) 个小区间。则 \(k\) 一定小于 \(2n\)。

求字典序第 \(k\) 小,则枚举每一位放什么。也就是要求包含 \(i\) 的不同 \(I(x)\) 的数量。

那么先对 \(I(x)\) 离散化。这个可以用哈希解决。

设当前枚举到第 \(i\) 个区间,则要求 \(l_i\) 到 \(r_i\) 间不同颜色的数量。同时,\(i\) 之前的区间对 \(i\) 有影响:必须包含之前选的区间,不包含之前不选的区间。

此时我们发现问题转化为了区间数颜色与区间覆盖。看数据范围,不能用线段树与 \(\text{bitset}\),然后就不会做了……(有人用 \(\text{ODT}\) 做,应该能卡?不过我也不会)

实际上,有一个很好的性质:对于任意两个颜色相等的位置 \(x,y\),一定有 \(\forall i,([l_i,r_i] \subseteq [x,y]) \vee ([x,y] \subseteq [l_i,r_i]) \vee ([l_i,r_i] \cap [x,y]=\varnothing)=1\)(可能没有考虑边界情况)。读者自证不难。

那么一个区间若包含某种颜色 \(i\),则必然包含所有颜色为 \(i\) 的位置。于是只在第一个位置算颜色 \(i\) 的贡献。那么就容易用线段树维护了。

SOJ1711 题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

  10. JSOI2016R3 瞎BB题解

    题意请看absi大爷的blog http://absi2011.is-programmer.com/posts/200920.html http://absi2011.is-programmer.co ...

随机推荐

  1. mysql主从故障跳过错误

    mysql主从故障跳过错误1.从库报错 21,22,23,25无法执行Retrieved_Gtid_Set: 265c6c2a-86ca-11ed-b07a-0242ac120002:1-25Exec ...

  2. kubectl查询日志命令

    防水堡 bug日志定位命令: docker logs --tail 100 xxx:xxx 是容器的id 或者名称kubectl logs-f --tail 100 xxx:xxx 是pod 的id, ...

  3. uniapp对接ChatGPT 简单实现对话功能

    最近很火的ChatGPT来了!我也是做了一个最最基础的模型,让大家更通俗易懂! 先看效果:  接下来直接上代码: <template> <view class="conte ...

  4. 2、Maven

  5. vue3 门户网站搭建2-ngnix

    路由配好了,需要调试下 build 后是否可用,这时我们需要一个服务端来运行静态网页. 官网直接下载一个 windows 版本的 ngnix 即可: http://nginx.org/en/downl ...

  6. Python系统模块os.py和sys.py常用函数

    OS模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os.ge ...

  7. 使用Android studio配置软件签名,并在车机安装

    系统级APP,可在Androidmanifest.xml中配置属性,并使用系统级签名. 1. 签名方式 1.1 bulid.gradle(:app)中添加签名信息 1.2 使用Android stud ...

  8. 反射 1 加载指定的DLL

    我们通常 都是用反射来操作指定的程序集(dll,exe). 需要引用 System.Reflection 有三种加载方式 Assembly assembly = Assembly.Load(" ...

  9. kotlin information

    Kotlin常用的by lazy你真的了解吗 =>    https://juejin.cn/post/7057675598671380493 END

  10. ArrayList学习笔记

    目录 1.继承关系 1.1.Serializable 标记性接口 1.2.Cloneable 标记性接口 1.3.RandomAccess 标记性接口 2.属性 3.构造方法 3.1.无参构造方法-A ...