『网赛总结』Day11

暑假以来?包括补题和 VP。

CF


1. CF1982

C

dp + 数据结构优化 / 贪心。

D

转化成解方程。裴蜀定理。

E

分治。每次简化 1/2。

f(n,k)=f(m,k)+f(nm,k1),m=2x,m<n,m(Max)。然后再算一算中间的数量即可。

F

维护序列 ai>ai+1。找到不满足条件的最大区间 [l,r],显然要答案区间包含它并且使得值域连续,这里根据最大值最小值 ds 上二分即可(因为前后都是递增的)。


2. CF1989

B

LCS 变形。

C

二分后简单贪心。

D

递归实现被 hack 了。

先一次操作使得 ci106 范围内,考虑 dp。

不妨按照限制从小到大 dp,每次转移不能暴力,由于前面所有状态可以转移,并且都是 +1,故 dp 数组单调,维护 ab 的最大值作为 Vnow 即可。

E

有个 dp 用第 k+1 维表示大于 k 的维的总答案的 trick。

本质上我们只关心相同数构成的块的状态。至少出现 k 个数说明段数大于等于 k

前缀和优化 dp。注意特殊情况:不在开头或者结尾的长为 2 的段。因为还原在 b 里面是 2 个 1。会和分成 2 个 1 的段重复计算。


3. CF1983

B

  1. 对每个 2×2 的矩阵操作,易证成立。

  2. 结论:每行每列关于 3 同余。

C

可以暴力确定前面和后面的分界点,判断中间是否成立即可。

D

不妨 r=l+1,发现所有 r>l 的情况都可以分解成多个 r=l+1 的操作。

考虑直接排序,一个数组排完过后一直 1 2 跳即可。发现只要奇偶性不变就可以。

又知这样子排序的交换次数是逆序对个数,bit 计算。

E

每个普通球的是贡献相似的。(所以实际上可以权值累加)

组合意义:普通球放一排,两人交替选择,中间可以插入特殊球,这些球的主人和后面的普通球一样。首尾可插,并且可重复插。

注意 Alice 选的都是奇数位的球,可以算出普通球和特殊球的位置占比,得出期望。

F

不难想到二分答案然后对满足条件的计数。(trie 上可以实现计算小于等于一个数的信息)

扫描 r,trie 上每个节点维护最后一次到达的下标 lstx,就是所有满足小于等于二分值的 lstx 的最大值。(在这个点前面一定能取到最小值)

不要忘记保留历史版本的 lst 最大值。


4. CF1988

C

长度就是 n 的二进制 1 个数加 1,因为每个位置都可以不选一次。这是基于限定选择位置和 ai 单增的贪心。

D

对所有人被染色时间 dp 即可。证明这个染色时间是 log 级别。

复杂度就是一个 mex 计算,f(i) 表示颜色 iminsiz,有 f(i)=1+(j<i)f(j)

f(1)=1,f(i)=2i1


5. CF1994

C

二分确定 dp 转移点,像一道 arcb。

D

鸽巢定理证明一定有解。

具体的,反着操作。你的同余系必定有 x+1 个,而你要找到和 x 同余的。

实现也简单,能加就加,平方对数。

E

按位贪心。

首先如果一个位超过 2 个,那么另一个一定可以把后面全部变成 1,直接跳出。

上面这个性质很强,说明跳出之前,前面的都只有 1 次。

每次都贪心留下这一位的答案即可,发现这是下界,考虑上界,由于唯一,如果要前面一位来调整的话就会丢弃那一位的 1,不优。

F

欧拉回路。

考虑预处理,让部分边变得重要,同时保证一定有解(度数是偶数,这可以通过 dfs 实现)。

最后就可以跑欧拉回路了。


6. CF1990

C

2 次过后数组就单增了,很好观察出来。

然后整个数组的变化就是向右平移,所以每个连续段的贡献是一个分段函数。

D

贪心。舍弃掉 >4 的行。算相邻两个段之间可不可以减少答案。


7. CF1995

B2

先判掉 s 相等的情况。

否则,考虑先选择 s,然后继续选 s+1。最后,看能否用 s+1 换掉一些 s

C

贪心,保存指数进行 log 运算。

D

转化:每 k 个位置必须有一个 1。

S 是你选的最终颜色状态。

S 和每个 P 有交,P 是每个 k 段的 ci 集合。

将 P 取反,可以得到等价条件:所有 iS 不包含于 Pi

理解就是取反之后,原来 P 是 1 的直接变成 0 了,只要 S 有 1 就行了。

可以做 bool 的高维后缀和。


8. CF1993 (VP)

C

循环节显然是 2k,所以对于每个灯你可以知道它在模意义下的 l,r,我们需要求最小的 s,使得 smod2k 被所有 [l,r] 区间包含。并且 smaxn

第一个限制直接做数组差分即可。第二个好算。

D

二分 + dp

平方 dp 是显然的,需要根据题目性质优化到线性。

性质:所有转移位置在 k 的同余系下不等且递增。

考虑每次转移是从 i1 或者 ik 转移而来,ik 的意思是舍弃一段,i1 是接上上一个。

如果 imodk=1则一定不能在前面一段的基础上接上 ai。根据性质得证。

其它情况就可以从 i1ik 转移过来了。

F

有个 trick 是一次调头相当于接着走,将长宽扩大一倍,每次行走赋予模意义这样就成功地去除了调头的限制。

设走 j 步后到达 xj,yj,到达 (0,0) 等价于 xj2w 同余,……。

考虑 k,设 X=xn,Y=yn,有方程:

X×i+xj0(mod2h)

Y×i+Yj0(mod2w)

可以转化成两个 ia(modb) 的形式。

excrt 合并一次即可,得出最小非负整数解,然后根据解的范围算出答案。


9. CF1998

B

我们的构造要向“每个区间只有 1 个数不一样考虑”。

C

比较难。但是出的好。

注意到如果我们不删除中位数这个位置的数,那么那个数是一定的。

所以我们可以把 k 加到最大的可以加的数上,统计答案就在这个数,然后二分算中位数即可。

其它策略?我们可不可以使得中位数变大一点?

此时我们就询问 an,然后通过操作来使得中位数最大即可。

操作也是很好想的,如果对 a 排序然后每次二分实现的话复杂度就是 O(nlogV) 的。

D

如果你提前求出从 1 到达每个点的最少时间,你发现不好做,因为你要限制的区间是有约束的。

换句话说,假设 A 从 s 开始走到 t,你知道 dpt,但是 dpt 可能由 [s,t) 的数转移过来,就没办法了。

解决方法也很好想,顺序扫描,每次统计从 i 出发的边所造成的贡献。对于边 ito,此时只考虑了 [1,i) 的边,所以对于 [i+1,to) 的点,这时的 dp 值完全是不限制的、正确的;所以我们计算一下影响区间就好了,打一个数组差分。

E

笛卡尔树。直接区间上做也可以。

建出树来,发现如果 suml 大于 ax 的话,那么 l 就一定可以替代 xr 同理。

但是有一个前提,就是到祖先的路径上的点都是可以的。

所以两次 dfs 即可。

严谨的证明你考虑每次操作是 upd 和删除,那此时 xl,r 所表示的数在 S 里面就一定是相邻的。

其实我交上去发现过了也觉得很不可思议。

E2 还不会。

加强版:[JOISC2022] 鱼 2。

在笛卡尔树的角度想是没有前途的,看能不能转化成区间的性质。

prerprel1min(al1,ar+1),则 [l,r] 内的所有数都不满足条件。

估计不会补了。


10. CF2004

我快出生了。

D

如果 lr 有重合,那么就直接 |ij|

否则,对于一个不完全同于 l 的位置,它一定部分重合于 r

所以你直接枚举在 l 左边,区间内,r 右边的情况即可。

E

Nim + sg

对每个 ai 算 sg 函数,判断所有 sg 异或是否是 0。

打表找结论,但我不会证。

结论:

  • a 是质数,则 sg(a)a 的质数编号。

  • 否则,sg(a)a 的最小质因子的 sg 值。

线性筛即可。要特判 1 和 2。

F

需要观察到分裂操作一定不优,这里有各种情况,但是你都是可以直接合并做的。

考虑区间 dp,[l,r][l,r] 能够转移过来,可以推出限制:sr+sl1=sr+sl1

这告诉我们同一个和下,区间都是包含关系,显然可以转移。

那么我们就可以按照 s 和来进行分组 dp 了,转移的代价就是,有一个 s 出现就可以减少 2 的代价。

注意最后 [],[] 的情况,舍去即可。


11. CF2001

C

对于每个点暴力询问 (1,i)。一定会返回路径中间的点,并且题目自动帮你二分了,所以复杂度是对的。

D

看来这种古怪的定义多半都只能是暴力+优化。

暴力选择最小字典序,奇数选最大,偶数最小。

一个数能选择必须它的位置后面出现了所有还没有选的数,这个直接记录 nxt 数组,丢进 set 里面,我们就可以知道这一次选择区间的 r

考虑 l?就是上一个位置 +1。现在限制都没了,就是区间里面查最值,ds 即可。

注意还有每个数只选一次的限制,所以每次把这个数的位置都在 ds 上给删除。


posted @   LCat90  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示