好题分享1

好题分享1

A. 【ynoi2009】rla1rmdq

做过。

分块。

边权非负,若一个点所处位置已被遍历过,那么这个点在块内无意义,故每个块可均摊 O(n)\mathcal O(n),总 O(nn)\mathcal O(n\sqrt n)

发现散块修改会将原先无意义的点标为有意义的,考虑对块重构即可,单次根号,涉及到求点在树上的 kk 级祖先,重剖即可,分析得不影响复杂度,感性理解往上跳就把这条链删了。

空间的话用 bitset或离线做到线性空间即可。

总时间复杂度 O(nn)\mathcal O(n\sqrt n)

B.【IOI2018】meetings

容易想到找到最大值位置分治 n2n^2 dp

nlog n 建出笛卡尔树。

然后 https://www.cnblogs.com/Khada-Jhin/p/10017454.html 讲得好。

C.【AGC002F】Leftmost Ball

做过。

将白球看作独立的颜色,发现任意时刻白球数量\ge除白球外的球类数。

钦定 1 类球先出现,然后是 2 类球,最后答案乘上 n 的阶乘即可。

考虑转移

当前放白球:fi,j+=fi1,jf_{i,j}+=f_{i-1,j}

当前放其他颜色的球(k-1个全放上):fi,j+=Cnki(j1)(k1)1k2×fi,j1f_{i,j}+=C^{k-2}_{nk-i-(j-1)(k-1)-1}\times f_{i,j-1}

注意这里为什么是选 k2k-2 个插孔,因为我们钦定放一个在当前最左的非白的空位,就能避免重复。

举个例子:如果不钦定的话,

12121 和 21212 在还没乘上 n 的阶乘是就已经都被统计到了,实际上只统计 12121 就行了。

n^2.


留坑。

posted @ 2022-09-29 07:21  蒟蒻orz  阅读(10)  评论(0)    收藏  举报  来源