CF1851
氵
把奇数和偶数拿出来分别排序,然后按下标归并,看看得出的结果是不是排好序的。
如果头尾同色,就找有没有 \(k\) 个位置和头尾同色;
否则从头找 \(k\) 个和头同色的,然后再在这之后找 \(k\) 个和尾同色的。
把每个前缀和相邻的相减,得出的结果:
有大于 \(n\) 的,拆成两个没出现的数相加;
有重复的,把其中一个拆了;
没有重复的且在 \(1\sim n\) 内,肯定在尾巴处补一个。
如果有两个大于 \(n\),或者两对重复,或者大于 \(n\) 的和重复的都有,那就不可行。
如果发现拆了之后不能构成排列,也不行。
赛时没看见无环
就是一个类似拓扑排序/深搜的题。从无限的药出发,不停更新。每种药可以混合(找前驱)/买。
法一:
考虑每个位单独看。如果 \(a_i,a_j\) 位上相等,那么 \(x\) 这一位应该和 \(a_i,a_j\) 的这一位相反。
建立 01 Trie。
枚举 \(i\),遍历 \(a_i\) 所有二进制位,如果当前位上有和 \(a_i\) 的位相等的分支,就必定走这个分支,同时把这一位对应的数累加进答案(这是贪心的想法,如果这里不选,即使后面 \(x\) 可以满足所有位,\(2^t> \sum_{x=0}^{t-1} 2^x\));否则就只有一条路可以走。
等走到了叶节点,我们就选好了 \(a_j\) 和 \(x\) —— 这是对于 \(a_i\) 的最大答案。
复杂度 \(O(nk)\)。
法二:
将 \(a\) 从小到大排序,下证最大答案一定是相邻的 \(a_i\) 产生。
排序后,假设答案不是相邻的 \(a_i,a_{i+1}\) 产生,那么必然是 \(a_i,a_j\) 产生,\(j-i>1\)。
若 \(a_i=a_j\),因为排了序,\(i<i+1<j\),\(a_i=a_{i+1}=a_j\)。\(a_i,a_j\) 产生的答案 \(a_i,a_{i+1}\) 也能产生。
否则 \(a_i,a_j\) 的二进制位一定有第一个不同的二进制位。由于 \(a_i<a_j\),所以这一位上 \(a_i=0,a_j=1\)。
此时 \(a_{i+1}\) 这一位上若是 \(0\),\(a_i,a_{i+1}\) 产生的答案必然比 \(a_i,a_j\) 更优;若是 \(1\),\(a_{i+1},a_j\) 产生的答案也更优。
矛盾。故一定是相邻的 \(a_i,a_{i+1}\) 产生答案。
之后的事情就是排一下序就行。
观察发现,\(h_i-h_j+h_j-h_k=h_i-h_k\),所以 \(i\rightarrow j\rightarrow k\) 的代价就等于 \(i\rightarrow k\) 的代价。
所以,点 \(i\) 能到达点 \(j\),只需要 \(i\rightarrow j\) 有一路径上的点高度均 \(\le h_i+e\) 即可。
注意到到达关系具有传递性,考虑并查集。
将所有询问离线,然后按照 \(h_{start}+e\) 从小到大排序,每次遇到一个询问,都把所有相互可到达的点并成一个块。
同时我们把所有边 \((u,v)\) 按照 \(\max(h_u,h_v)\) 从小到大排序。当此次询问 \(h_{start}+e=x\) 时,对于一条边 \((u,v)\),如果 \(\max(h_u,h_v)\le x\),那就可以合并 \(u,v\)。
等把所有边都合并完了之后,检查 \(start,end\) 是否在一个连通块内。
注意取出边合并两端的操作,不用每次询问都从头开始,所以总共是 \(O(m)\) 的。不会超时。
随机推荐
- Ribbon默认负载均衡规则替换为NacosRule
近期博主在参与一个 Spring Cloud 搭建,版本为 Hoxton.SR12,服务注册发现组件为 Nacos 的老项目时,发现项目负载均衡组件 Ribbon 的负载均衡规则在某些场景下不够完美, ...
- docker 镜像管理之 overlay2 最佳实践
1. Docker 镜像 Docker 镜像是个只读的容器模板,它组成了 Docker 容器的静态文件系统运行环境 rootfs,是启动 Docker 容器的基础. Docker 镜像是容器的静态视角 ...
- CSS - 使图片自适应
img { height: 100%; object-fit: cover; }
- Redis不同版本,内存分配,硬件的性能研究
Redis不同版本,内存分配,硬件的性能研究 前言 Konw more ! Do more ! Gain more ! 骨折之后开始减肥. 前段时间跳绳导致膝盖不舒服,现在改骑车和走路. 在有限的没人 ...
- tikv-ctl的简单学习
tikv-ctl的简单学习 摘要 最近在学习使用 tidb. 有一个场景,单独使用了tikv作为键值对的数据库. 但是比较不幸.总是出现宕机的情况 因为这个环境是单独使用tikv 二进制进行安装的 没 ...
- [转帖]jmeter命令大全(命令行模式)
jmeter命令 --? 打印命令行选项并退出 -h. --帮助 打印使用信息和退出 -v. --版本 打印版本信息并退出 -p. --propfile<argument> 要使用的jme ...
- Windows 和 linux 下面 Redis 性能比较
Windows 和 linux 下面 Redis 性能比较 问题来源 公司里面有一些环境还是使用Windows来跑 对应的. Redis和nginx 也是跑在Windows上面 但是微软官网自从 3. ...
- [转帖]深入内存/主存:解剖DRAM存储器
https://zhuanlan.zhihu.com/p/561501585 2022/9/9更新:经过和评论区大佬的交流,准备研读一下JEDEC标准,主要是加深自己对banking和访存加速的理解( ...
- Sysbench简单测试数据库性能
摘要 先进行了一个PG数据库的测试. Mysql数据库的测试稍后跟上. 紧接着上一篇的安装, 部分文件可能需要特定路径才可以. sysbench 测试的说明 一个参数 这里稍微说一下参数的问题 sys ...
- sshpass 免密码进行文件复制的方法
1. 部分centos8 没有安装 sshpass 需要先安装 sshpass yum install sshpass 2. 需要增加一个配置文件, 避免因为 stickhost 检查 造成命令失效 ...