联合省选 2021 解题报告

本文是关于2021年联合省选的解题报告,详细介绍了D1T1-D2T3及B卷D1T1-D2T1的题目解析,涉及卡牌游戏、矩阵游戏、图函数等算法问题。文章强调了解题过程中的技巧应用,如差分约束、并查集、最短路等,并提供了代码类的实现细节,包括栈序撤销的可撤销并查集和循环展开等优化技巧。

很久没有写过博客了呢。

D1T1 - 卡牌游戏

Alice 有 n n n 张卡牌,第 i i i 1 ≤ i ≤ n 1 \le i \le n 1in)张卡牌的正面有数字 a i a_i ai,背面有数字 b i b_i bi,初始时所有卡牌正面朝上。

现在 Alice 可以将不超过 m m m 张卡牌翻面,即由正面朝上改为背面朝上。Alice 的目标是让最终朝上的 n n n 个数字的极差(最大值与最小值的差)尽量小。请你帮 Alice 算一算极差的最小值是多少。

对于数字考虑,极差最小就是对于排序之后的数组中,取一个长度最短的区间。

我们把 a i a_i ai b i b_i bi 都放进去排序,取 n n n 张牌至少出现一次且反面向上的不超过 m m m 张的区间。这很好维护,也不难证明左端点移动时,右端点是单调的,因此用双指针维护即可。

时间复杂度 O ( n ) \mathcal{O}(n) O(n).

D1T2 - 矩阵游戏

Alice 有一个 n × m n \times m n×m 的矩阵 a i , j a_{i, j} ai,j 1 ≤ i ≤ n 1 \le i \le n 1in 1 ≤ j ≤ m 1 \le j \le m 1jm),其每个元素为大小不超过 10 6 {10}^6 106 的非负整数。

Bob 根据该矩阵生成了一个 ( n − 1 ) × ( m − 1 ) (n - 1) \times (m - 1) (n1)×(m1) 的矩阵 b i , j b_{i, j} bi,j 1 ≤ i ≤ n − 1 1 \le i \le n - 1 1in1 1 ≤ j ≤ m − 1 1 \le j \le m - 1 1jm1),每个元素的生成公式为

b i , j = a i , j + a i , j + 1 + a i + 1 , j + a i + 1 , j + 1 b_{i, j} = a_{i, j} + a_{i, j + 1} + a_{i + 1, j} + a_{i + 1, j + 1} bi,j=ai,j+ai,j+1+ai+1,j+ai+1,j+1

现在 Alice 忘记了矩阵 a i , j a_{i, j} ai,j,请你根据 Bob 给出的矩阵 b i , j b_{i, j} bi,j 还原出 a i , j a_{i, j} ai,j

直接高斯消元可以获得一组没有限制的可行解。

首先我们考虑 a i , j a_{i,j} ai,j 范围没有限制的时候怎么做。

那就把第 1 行和第 1 列都定为 0 去递推就好了,反正一定有解,根本不要什么高斯消元。

那么我们就要考虑怎么把这组可行解的值都塞进 [ 0 , 1 0 6 ] [0,10^6] [0,106] 以内。

考虑将矩阵的一行加上 ⟨ − k , k , − k , … , ( − 1 ) j ⋅ k , … , ( − 1 ) m ⋅ k   ⟩ \left\langle -k,k,-k,\ldots,(-1)^j\cdot k,\ldots, (-1)^m\cdot k\ \right\rangle k,k,k,,(1)jk,,(1)mk ,那么显然 b b b 不会发生改变,因为受到影响的四格中必然一格加一格减。列同理。

所以我们可以将元素 a i , j ′ a'_{i,j} ai,j 调整为 a i , j = a i , j ′ + ( − 1 ) j ⋅ p i + ( − 1 ) i ⋅ q j a_{i,j}=a'_{i,j}+(-1)^j\cdot p_i+(-1)^i\cdot q_j ai,j=ai,j+(1)jpi+(1)iqj,那么只要 a i , j ∈ [ 0 , 1 0 6 ] a_{i,j}\in[0,10^6] ai,j[0,106],即

− a i , j ′ < ( − 1 ) j ⋅ p i + ( − 1 ) i ⋅ q j < 1 0 6 − a i , j ′ -a'_{i,j}<\quad (-1)^j\cdot p_i+(-1)^i\cdot q_j\quad <10^6-a'_{i,j} ai,j<(1)jpi+(1)iqj<106ai,j

考虑解不等式的一边,那么就很显然是一个差分约束问题……好像哪里不对劲。

如果 p i p_i pi q j q_j qj 同号,也就是 i , j i,j i,j 奇偶性相同就没有办法做了。明明长得就是个差分约束的样子,却又不能做。于是做到这我自闭了……

于是就学习了一个新的技巧。

我们令 c i = ( − 1 ) i ⋅ p i , d j = ( − 1 ) j + 1 ⋅ q j c_i=(-1)^i\cdot p_i, d_j=(-1)^{j+1}\cdot q_j ci=(1)ipi,dj=(1)j+1qj,则

( − 1 ) j ⋅ p i + ( − 1 ) i ⋅ q j = ( − 1 ) i + j ⋅ c i + ( − 1 ) i + j + 1 ⋅ d j \begin{matrix}(-1)^j\cdot p_i+(-1)^i\cdot q_j&=&(-1)^{i+j}\cdot c_i+(-1)^{i+j+1}\cdot d_j\end{matrix} (1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值