ABC352

ABC一眼。

那你怎么吃那么多罚时

D

题意比较抽象,稍微想一下就发现是单调队列。

E

考虑 Kruskal 的本质,优化建图一下。

F

dfs。

但是我们不屑于 dfs,考虑状压。

发现图上存在一些连通块,每个连通块用一个 \(n\) 位的二进制数来表示,来代表这个连通块中排名的相对关系。对于 001……,我们将二进制数左移一位的排名显然也是对于连通块合法的,左移两位也是合法的。但是左移三位不行。

upd:证明一下,可以将每个连通块内部的点的依赖关系变成一棵树,使得所有 \(v:fa\rightarrow son>0\),然后直接构造即可。

合法的方案就是是否能将每个连通块左移合法的位数后按位或为 \(2^{n}-1\),按位与为 \(0\)

若一个连通块内的排名唯一,那么代表对于该连通块只有一种左移方式使得合法。

于是令 \(f_{i,s}\) 代表考虑前 \(i\) 个连通块,能否得到 \(s\)。转移枚举当前连通块左移多少位即可。

但是这样只能求出有无解,没什么用。

考虑改进,如果某个 \(f_{i,s}\) 可以经过一定的转移后得到 \(f_{n,2^n-1}\),代表 \(f_{i,s}\) 可以经过一定操作得到合法解。于是我们看看第 \(i\) 个连通块左移 \(j\) 位后能否通过一定操作得到合法解,就能得到答案。

upd:new solution,发现转移关系是一张 DAG,于是可以从 \(f_{n,2^n-1}\) 倒着标记出哪些 \(f_{i,j}\) 可以转移到 \(f_{n,2^n-1}\),然后没了。

至于求每个数的具体排名是显然的。

时间复杂度 \(O(n^2+n\times 2^n)\),非常有保证。

G

NTT。

总结:战犯场。

posted @ 2024-05-11 01:36  BYR_KKK  阅读(11)  评论(0)    收藏  举报