P4839

有人搞错了复杂度白开心了一下午/kk

基于离线 ST 表+前缀线性基合并的 O(mlogmlog2V)O(log2V)O(m\log m\log^2V)-O(\log^2V) 做法。

upd:@chenxinyang2006 的在线 O(nlogV(logV+logm))O(n\log V(\log V+\log m)) 做法。

阅读全文 »

CF1584D

vp 时候搞出来的 logn+2+?\le\log n+2+? 次询问做法。看了一圈没有做法跟我相同的,为什么呢。

首先看到 4040 次猜测是一次二分的 log\log 加上常数。然后发现,如果我们找到了 jj,又知道 ? 1 n? 1 j-1 的结果,就可以解出来 i,ki,k。于是想怎么二分。

设当前二分到 midmid,我们先询问 [1,mid][1,mid] 得到 xx,然后开始分讨:

阅读全文 »

AT_arc139_c

会正解做法之后还以为 10 10 答案是 3737……

钦定 nmn\le m,从 3x+y3x+yx+3yx+3y 的匹配的角度考虑。考虑对于一对 x,yx,y,我们保持 3x+y3x+y 不变,xx1x\to x-1x+3yx+3y 如何变化。发现 x+3y(x1)+3(y+3)=x+3y+8x+3y\to (x-1)+3(y+3)=x+3y+8。于是对于一个 3x+y=p3x+y=p,符合条件的 x+3y=q=8k+zx+3y=q=8k+zzz 为定值且 kk 为一个区间。

再进一步,设 k[l,r]k\in[l,r],容易发现对于 3x+y=p83x'+y'=p-8zz 不变,但是 l,rl,r 变化。具体地 ll,rrl'\le l,r'\le r。则贪心地想,从小到大枚举 pp,每个 3x+y3x+y 都选择最小的满足条件的 kk(即选择能匹配的最小的 x+3yx+3y),这样一定是不优的。开个数组对每个 zz 记录当前已经选了的最大的 kk,从前往后扫 pp,从 k+1k+1 开始判断是否可行。

阅读全文 »

CF1186F

被诈骗了一个上午啊!但是想到了还是很妙的!

每个点至少要保留 degi2\left\lceil\dfrac{deg_i}{2}\right\rceil 条边,也就是一半左右。如果我们直接分配每个点,哪些边选哪些不选,发现这会影响很多东西,无法保证正确。

于是展开联想,选一半,如果有一条路径经过,入边和出边不同,是否就能满足条件了呢?

阅读全文 »

P4324

来个考场上的 O(nlogn)O(n\log n) 二分哈希做法。

看到回文串,想到先选定回文中心。如果只有一个序列自然是可以直接二分的。但是有两个序列还要选一个折点。怎么选?

我们发现在回文中心所在序列向两端拓展尽可能远是不劣的。钦定中心在 AA,如果可以先换行走到 BiB_i,又可以直接走到 AiA_i,因为两种走法到 BiB_i 的距离是相同的,所以可以直接走到 AiA_i 再一步到 BiB_i。反过来,如果先换行,就不能走回去。

阅读全文 »