Codeforces Round 864 (Div. 2)

Posted zltzlt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round 864 (Div. 2)相关的知识,希望对你有一定的参考价值。

评价:A~E 感觉出的挺一般,特别是 D 怎么放这种暴力题,场上我还没调出来,F 没看。但是 Orz rui_er。

A

在一个点周围放障碍即可。

B

求出最少需要的操作次数 \\(p\\),若 \\(p > k\\) 就无解,否则若 \\(n\\) 为偶数只能任选一个格子翻偶数次,即有解当且仅当 \\(2 \\mid (k - p)\\);若 \\(n\\) 为奇数可以一直翻中间格子,恒有解。

C

\\((1,1)\\),此时得到了 \\(\\max(x,y)=p\\),再问 \\((p,p)\\),此时可以得到 \\(\\min(x,y)=q\\),则答案为 \\((p,q)\\)\\((q,p)\\)。问 \\((p,q)\\),若返回值非 \\(0\\) 那么答案就是 \\((q,p)\\),否则是 \\((p,q)\\)

注意一开始的 \\(p > \\min(n,m)\\) 时要特判,此时已经确定横纵坐标之一了,再问一次 \\((1,p)\\)(或 \\((p,1)\\))就可以得出答案。

D

暴力 set 维护每个点的重儿子,\\(2\\) 操作只会进行 \\(O(1)\\) 次修改。

E

考虑将每个 \\(a_i\\) 一直 \\(x \\gets \\varphi(x)\\) 得到的所有数从小到大写成一个序列,则问题可以被简化成:

给定 \\(n\\) 个长度不超过 \\(\\log V\\) 的序列,有两种操作:

  1. 删除 \\([l,r]\\) 序列的末尾元素(如果序列只有一个元素就不删)
  2. 查询 \\([l,r]\\) 序列的 \\(\\operatornameLCP\\)

考虑所有序列总长为 \\(O(n \\log V)\\),删除操作时暴力枚举 \\(l\\)\\(r\\) 即可,使用并查集维护每个元素下一个非 \\(1\\) 元素的位置。

考虑从末尾删元素只会对 \\(\\operatornameLCP\\) 在长度方面有影响,所以可以认为是静态查询。

既然是静态,那么对于每个位置预处理出最大的 \\(nxt_k,i\\) 表示 \\([i,nxt_k,i]\\) 在第 \\(k\\) 位相等。询问直接枚举 \\(\\operatornameLCP\\),最大的满足 \\(\\forall p \\in [1,k],nxt_p,l \\ge r\\)\\(\\forall i \\in [l,r], k \\le len_i\\)\\(k\\) 就是 \\(\\operatornameLCP\\)

实现时需要一个线段树维护序列长度的区间 \\(\\min\\) 和区间和。时间复杂度 \\(O(n (\\log n + \\log V) + m \\log n \\log V)\\)

F

待补

Codeforces Round #691 (Div. 1)

Codeforces Round #691 (Div. 1)

题号题目知识点
ARow GCD
BGlass Half Spilled
CLatin Square
DFlip and Reverse
ENim Shortcuts
FRange Diameter Sum

以上是关于Codeforces Round 864 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

codeforces比赛题解#864 CF Round #436 (Div.2)

Codeforces Round 864 (Div. 2) C和D

Codeforces Round #436 (Div. 2)ABCDE

Codeforces Round #705 (Div. 2)

Codeforces Round #774 (Div. 2)

Codeforces Round #808 (Div. 1)(A~C)