联合省选2021题解

联合省选2021题解

Day1

A.卡牌游戏

一个很显然的思路是枚举最大值和最小值的位置,然后用\(O(N)\)的时间判断一下是否合法。时间复杂度\(O(N^3)\)

那考虑对这个算法优化,由于\(m\)的限制显然满足可二分性(我们的策略一定是能不翻就不翻),因此可以考虑枚举最小值位置的同时二分答案,那么我们只需要特殊考虑一下无法通过反转满足要求的边界,找到二分的区间即可。

复杂度\(O(n\log n)\)

A

B.矩阵游戏

考虑没有上下界限制的答案那么显然可以钦定\(A\)矩阵的最左边一列和最上边一行均为\(0\),递推计算即可。

考虑\(0\leq A_{i,j}\leq 10^6\)的限制,注意到如果对于一行,把第\(x\)个数加上\((-1)^x\times k\)\(k\)为任意整数,那么新的矩阵依然合法。列同理。

那考虑我们给每一行加上一个值\(r_i\),每一列加上一个值\(c_i\),那么我们最后的答案可以写成这个形式

\[\begin{bmatrix} A_{1,1}+r_1+c_1 & A_{1,1}-r_1+c_2 &.... \\A_{1,2}+r_2-c_1 & A_{2,2}-r_2-c_2 &.... \\....&....&.... \end{bmatrix} \]

但我们很不喜欢看到这种加和的项,因此考虑隔行取反,这样就可以进行差分约束了。

复杂度\(O(nm)\)

B

C.图函数

考虑另一个问题:无论\(v\)有没有对\(u\)做贡献,我们都将它删去。

那么仔细想想这个题是和原问题等价的,因为如果这个点\(v\)没有和\(u\)强联通,那么其他点和\(u\)强联通的那两条路径上也必不会有\(v\)(否则设这个点为\(x\),\(x\)显然可以通过\(v\)走到\(u\))。

那考虑最终答案是\(\sum{f(u,G)}\),那么我枚举\(u\),只考虑编号不小于\(u\)的点,倒序加边,那如果一个\(v\)\(u\)强联通了,设这条路径上编号最小的边编号为\(x\),那么点对\((u,v)\)可以对\(h(G)....h(G_{x-1})\)做贡献。于是差分一下,最后统计一下后缀和即可。

C

Day2

D.宝石

显然可以\(O(nm\log n)\)用倍增解决。

但上述做法是没有前途的。

考虑\(m\leq300\)

首先可以发现我们要把\(s\to t\)的路径拆成\(S\to LCA\)\(LCA\to T\)

由于\(P_i\)互不相同,那么我们可以处理出每个点\(i\),设\(f(i,gem)\)表示\(i\)向上的第一个宝石为\(gem\)的节点,那我们可以\(O(nm)\)处理出\(f\)的值,对于\(S\to LCA\)的路径暴跳即可,对于\(LCA\to T\)的路径我们反着暴跳即可。

现在\(m\leq 5\times10^4\)

上述做法看起来也歇了,但仔细想想是有前途的,我们可以用主席树把空间缩小,那么关键的部分就是我们不能在树上暴跳了。

但我们发现从\(i\)往上找一个宝石,再从这个点往上找一个,等价于从\(i\)向上找两个。

那么倍增即可处理\(S\to LCA\)的部分。

对于\(LCA\to T\)的路径我们可以二分这部分收了多少宝石,然后从\(T\)反着找这么多宝石,看最后的那个点深度与\(LCA\)的关系

时间复杂度\(O(n\log^2n)\)

D

E.滚榜

省选最大诈骗题

因为我们不关心\(b_i\)的具体分配方式,因此对于一个全排列我们可以贪心地去分配。给每一个人尽量少的\(b\),最后看\(m\)个题是否够分即可。

时间复杂度\(O(n!)\),期望得分\(60pts\)

虽然上边的那个大暴力得分很高,但是它是没有前途的,看到这个范围其实应该还是给状压\(dp\)的。

由于\(b_i\)单调不降,那么如果我这个点分配了一些题,那么后边所有点都要分配至少这么多题。

那么可以考虑维护增量,提前计算贡献,设\(f(S,i,j)\)表示已经选的人的集合为\(S\),上一个选的是\(i\),已经有的贡献是\(j\)的可能排名个数,枚举增量和上一个的位置转移即可。

E

F.支配

支配关系显然形成一棵树,且我们可以用类似于拓扑排序的方法求出支配树。

问题就在于如何处理询问。

注意到一个点\(u\)的受支配集改变一定是存在一条路径使得他不经过\(u\)的祖先,进一步的我们发现他一定不经过\(u\)在支配树上的父亲。那么我们可以考虑处理出每一个点\(u\)不经过它在支配树上的父亲,能被什么点\(v\)到达,那么这个\(v\)就有可能对点\(u\)做贡献,那么我们处理询问的时候直接树上差分即可。

F

posted @ 2021-04-21 16:59  shao0320  阅读(172)  评论(0编辑  收藏  举报
****************************************** 页脚Html代码 ******************************************