A

B

把奇数和偶数拿出来分别排序,然后按下标归并,看看得出的结果是不是排好序的。

C

如果头尾同色,就找有没有 \(k\) 个位置和头尾同色;

否则从头找 \(k\) 个和头同色的,然后再在这之后找 \(k\) 个和尾同色的。

D

把每个前缀和相邻的相减,得出的结果:

  1. 有大于 \(n\) 的,拆成两个没出现的数相加;

  2. 有重复的,把其中一个拆了;

  3. 没有重复的且在 \(1\sim n\) 内,肯定在尾巴处补一个。

如果有两个大于 \(n\),或者两对重复,或者大于 \(n\) 的和重复的都有,那就不可行。

如果发现拆了之后不能构成排列,也不行。

E

赛时没看见无环

就是一个类似拓扑排序/深搜的题。从无限的药出发,不停更新。每种药可以混合(找前驱)/买。

F

法一:

考虑每个位单独看。如果 \(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}\) 产生答案。

之后的事情就是排一下序就行。

G

观察发现,\(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)\) 的。不会超时。

随机推荐

  1. Go-稀疏数组

    package main import "fmt" // 稀疏数组 // 1. 二维数组 // 2. 存在大量相同相同数据和少量不同数据 // 思维: 将大量相同数据转化为: (数 ...

  2. [转帖]CentOS-7-x86_64-DVD-2009 rpm包列表(centos7.9)

    https://www.cnblogs.com/hiyang/p/14803391.html 文件数 4071 个,共3.8G 复制389-ds-base-1.3.10.2-6.el7.x86_64. ...

  3. 【转帖】Java Full GC (Ergonomics) 的排查

    文章目录 1. Full GC (Ergonomics) 1.1 Java 进程一直进行 Full GC 1.2 Full GC 的原因 1.3 检查堆占用 2. 代码检查 3. 解决方式 1. Fu ...

  4. [转帖]vm内核参数之缓存回收drop_caches

    注:本文分析基于3.10.0-693.el7内核版本,即CentOS 7.4 1.关于drop_caches 通常在内存不足时,我们习惯通过echo 3 > /proc/sys/vm/drop_ ...

  5. [转帖] GC耗时高,原因竟是服务流量小?

      原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近,我们系统配置了GC耗时的监控,但配置上之后,系统会偶尔出现GC耗时大于1s的报警,排查花了一些力气,故 ...

  6. 使用linux上面powershell安装vm powercli 连接vcenter 通过计划任务自动创建部分虚拟机的快照以及自动清理过期快照的办法

    经过一晚上的折腾, 终于验证出来一个非常简单的方法. 也比较好理解和使用. 这里简单记录一下: 使用linux上面powershell安装vm powercli 连接vcenter 通过计划任务自动创 ...

  7. vue3关于.sync的用法

    场景描述 我们都知道,子组件是不能够去修改父组件传递过来的数据. 因为如果子组件去修改父组件件传递过来的数据. 会导致数据的应用流向变得难以理解. 但是有些时候,我们需要当子组件的数据变化后,父组件的 ...

  8. 学习React中的jsx-保证你看的明明白白

    安装react的脚手架 1==>行 npx create-react-app myreactdemo01 解释一下: npx create-react-app 你的项目名称 npx create ...

  9. 【小实验】golang中的字节对齐

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用golang来调用SIMD指令,发现程序崩溃了: __ ...

  10. ABP 领域服务层学习记录

    在ABP框架中有一个约定,所有的领域服务都应该继承并实现IDomainService接口,在领域层Core创建某一个实体的领域服务类,继承并实现IDomainService接口.在ABP框架中,领域服 ...