联合省选 2021 A 卷 题解

卡牌游戏

首先一定是翻一个前缀和一个后缀。

然后是答案具有单调性,于是二分答案 (k),考虑是否存在方案满足极差 (le k)

考虑双指针,递增地枚举最大值 (v),维护区间 ([l,r]) 使 (v-k le a_lle a_rle v),然后检查两边的 (b) 是否也在 ([v-k,v]) 内。

若存在一个区间使 (b) 合法那么这个 (k) 可行。复杂度 (O(nlog n)),线性做法先咕了。

矩阵游戏

假如对 (a) 的大小没有限制,那么直接钦定最下最右侧为 (0),推上去就行。

然后尝试调整,发现如果对一整行进行 (+x,-x,+x,-x, cdots) 的操作,(b) 值不变。

对列同理,但是我们改变一下,先 (-)(+),每个格子的修改就是 (a-b) 的形式了。

然后就是一个差分约束系统,(O(n+m)) 个变量,(O(nm)) 个约束,跑一遍 spfa 是 (O((n+m)nm)) 的。

图函数

https://strncmp.blog.luogu.org/solution-p7516

宝石

https://strncmp.blog.luogu.org/solution-p7518

滚榜

考虑一个复杂度比较高的 dp:(f(S,i, j, k)) 表示已经滚过 (S) 集合的队伍,上一个为 (i),当前一共用掉 (j) 个题,上一次用了 (k) 题。

然后尝试去掉 (k)。先考虑一个 (O(n!cdot n)) 的暴力,发现下一次只要令 (b_{p_{i+1}}=max(a_{p_{i+1}}-a_{p_i}, [p_{i+1}>p_i])) 就行。

(Delta_{i+1}=max(a_{p_{i+1}}-a_{p_i}, [p_{i+1}>p_i])),那 (b) 就是 (Delta) 的前缀和,(Delta_i) 产生了 (n-i) 次贡献。

于是换枚举 (b) 为枚举 (Delta),那 (k) 那一维自然就省掉了。最后复杂度是 (O(2^ncdot n^2m))

支配

gugugu