VP under 新赛制

两场比赛多数题目相同。第一列是北京市赛的 ID,第二列是河南省赛的。

IDTagDiffDescriptionSolutionCodeReview
AEasy任意操作:将 11 替换为 2323,将 22 替换为 3131,将 33 替换为 1212,或删除相邻的两个相同字符。求能由 SS 操作得到的 T[l,r]T[l, r] 数量。不变量 x=⨁six=\bigoplus s_{i},主机派,O(N)\mathcal{O}(N)。109
BEMedium平面点 AA 和 BB。BB 先手,轮流操作:将点移动至 (x−1,y)(x-1, y) 或 (x,y−1)(x, y-1)。AA 不能移动到 BB 经过的所有位置,包括起点,除原点。若 AA 到达 (0,0)(0,0) 则 AA 获胜;否则 BB 获胜。分类讨论。若 AA 已在原点胜。若 BB 已在原点胜。若 AA 比 BB 靠近原点至少两步则胜。若 BB 在纵轴上,当 AA 不在纵轴上时胜,横轴同理。若 BB 在第一象限内,判断 AA 走到 BB 的右上方的时间,与 BB 到 (1,1)(1, 1) 的时间。O(1)\mathcal{O}(1)。187+2
CH构造 0 到 N−1N-1 的排列,最小化 ∏i=1N−1(ai⊕ai+1)\prod_{i=1}^{N-1} (a_i \oplus a_{i+1}),再最小化字典序。最小值时,ai⊕ai+1=lowbit(i)a_i \oplus a_{i+1} = \text{lowbit}(i)。枚举 a1a_{1},须满足 a1⊕⨁i=1k−1lowbit(i)<Na_{1} \oplus \bigoplus_{i=1}^{k-1} \text{lowbit}(i) < N。
D对于长度为 2N2 N 的序列 bb,两人轮流删一个数,最终剩下两个,先手希望它们的差尽可能小,后手希望尽可能大。排序后 F(b)=min⁡(bi+N−bi)F(b)=\min(b_{i+N}-b_i)。先手保证 ≤F(b)\le F(b):取走 [i∗,i∗+N][i^*, i^*+N] 以外的全部 N−1N-1 个数。后手保证 ≥F\ge F:对称取 (bi,bi+N)(b_{i}, b_{i+N}),将剩下某个 {i,i+N}\lbrace i, i+N \rbrace。
长度为 2N2 N 的序列 AA。依次处理操作:(a) 设 AA 排序后为 bb,输出 min⁡i(bi+N−bi)\min_{i}(b_{i+N}-b_i);(b) AX←AX+1A_X \gets A_X + 1;© 对所有 ii,Ai←max⁡(Ai−T,T)A_i \gets \max(A_i - T, T)。设全局偏移量 dd,全局下界 hh,辅助数组 vv,满足 ai=Ai+d=max⁡(vi,h)a_i=A_i+d=\max(v_i, h),设 aa 排序后为 bb,设 li=bi,ri=bi+Nl_i=b_i, r_i=b_{i+N}。线段树维护节点的 min⁡r\min r, max⁡r\max r, min⁡l\min l, max⁡r\max r, Ans=min⁡(r−l)\text{Ans}=\min(r-l)。
(a) 输出 Ans\text{Ans};
(b) 设 x=max⁡(vi,h)x = \max(v_i, h),线段树二分找到 ll 中 xx 的最后一次出现位置 pp,更新 lp←lp+1l_p \gets l_p+1,rr 同理,随后 vi←x+1v_i \gets x+1;
© 设 x=d+2Tx = d+2T,更新 li←max⁡(li,x)l_i \gets \max(l_i, x),即线段树二分找到 li<xl_i<x 的范围后做区间赋值,对完整的 ll 节点更新 min⁡l=max⁡l=x\min l=\max l=x,并更新 Ans=min⁡r−x\text{Ans}=\min r-x,rr 同理,随后 d←d+Td \gets d+T,h←max⁡(h,x)h\gets \max(h, x)。
ECEasy有 MM 个任务,每个任务需要被处理 KK 次。每一单位时间,可以选择至多 NN 个不同的任务,并分别处理一次。最小化总时间。max⁡(K,⌈MKN⌉)\max(K,\lceil \frac{MK}{N}\rceil)。38+1
FBMedium长度为 NN 的排列 AA,操作:选择区间 [l,r][l, r],若满足对 i∈[l,r]i \in [l, r],Ai>max⁡(Al−1,Ar+1)A_i > \max(A_{l-1}, A_{r+1}),则翻转 A[l,r]A[l, r]。分别最大化、最小化 ∑i=1Ni×Ai\sum_{i=1}^N i \times A_i。操作等价于在 Cartesian 树上交换左右子树。O(N)\mathcal{O}(N)。146
GJf(s)f(s) 表示满足 prefix⁡(s,i)=(suffix⁡(s,i))R\operatorname{prefix}(s,i)=(\operatorname{suffix}(s,i))^R 的最大 ii。求所有 f(S[l,r])f(S[l,r]) 之和。
HHard33 个初始为空的能量球槽位。有 NN 个回合。第 ii 回合,有 AiA_i 张卡牌 A 和 BiB_i 张卡牌 B,任意顺序打牌。打出卡牌 A 时,若存在空槽位,则占用一个空槽位并生成一个球;否则造成 DD 点伤害。打出卡牌 B 时,若场上有球,则消耗一个球并造成 2D2D 点伤害,同时释放对应槽位;否则无效果。每回合结束时,若场上有 xx 个球,则造成 xx 点伤害,且球会保留到下一回合,卡牌不保留。求 NN 个回合内能造成的最大总伤害。DP。考虑某回合从 xx 个球变成 yy 个球,需要消耗 p+A−qp + A - q 个球。O(N)\mathcal{O}(N)。AC
IIExpert有 NN 支队伍和 MM 场比赛,每支队伍最多参加 22 场比赛。将每支队伍分配给 22 位教练之一。对于每场比赛,若有一支分配给教练的队伍参赛,则该教练获得 11 个礼品。求两位教练获得的礼品总数最大值。(1) 比赛为点,队伍为边。特别地,若一支队伍只参加一场比赛 uu:新建虚拟叶子 xx,连边 (u,x)(u,x)。得到的图有重边无自环。
(2) 对边二染色,目标是使尽可能多的点满足其关联边中有两种颜色。
(3) 只有纯奇环分量不能让每个点有两种颜色,答案减去 1。
(4) 构造:若是欧拉图,即所有点的度数都是偶数,纯环显然,否则存在度数至少为 44 的点 ss,以它为起点求欧拉回路,则除 ss 外的每个点都有两种颜色,而欧拉回路至少出入两次 ss,可以对其中一个环反转达到两种颜色。若存在奇度点,新建超级虚点 ss,从 ss 向每个奇度点连边,得到欧拉图,以 ss 为起点求欧拉回路,则除 ss 外的每个点都有两种颜色。O(N+M)\mathcal{O}(N + M)。
AC
JA对排列 aa,令 ll 为满足 max⁡j=1iaj=ai\max_{j=1}^i a_j = a_i 的 ii 的数量,rr 为满足 min⁡j=1iaj=ai\min_{j=1}^i a_j = a_i 的 ii 的数量。对 1∼N1 \sim N 的随机排列,求满足 l≥r+Kl \ge r + K 的概率。
KExpert从长度为 NN 的排列中随机选择 bb,重复随机选择 ⌊∣b∣/2⌋\lfloor \lvert b \rvert /2 \rfloor 个的元素删除,直至递增。求最终剩余的元素个数的期望。设第 ii 轮的长度为 xix_i。定义假想过程:即使已经递增,也继续随机删除,直到只剩一个元素。一个序列一旦递增,此后的序列都递增。因此实际执行第 ii 轮删除的概率(在所有随机过程中,而非在前一轮保留的排列中),在假想过程就是排列不递增的概率,为 1−1xi!1-\dfrac1{x_i!}。
(1) 最终剩余数量 = 初始数量 − 实际删除的总数量,故总贡献 N−∑i=0k−1⌊xi2⌋(1−1xi!)\displaystyle N-\sum_{i=0}^{k-1}\bigg\lfloor\frac{x_i}{2}\bigg\rfloor\bigg(1-\frac1{x_i!}\bigg)。
(2) 按假想过程,期望贡献为 1。但如果第 ii 轮的假序列已经递增,实际就不需要这轮删除,撤回 ⌊xi2⌋\bigg\lfloor\dfrac{x_i}{2}\bigg\rfloor 个删除。总贡献 1+∑i=0k−1⌊xi2⌋1xi!\displaystyle 1+\sum_{i=0}^{k-1} \bigg\lfloor\dfrac{x_i}{2}\bigg\rfloor \frac{1}{x_i!}。O(N)\mathcal{O}(N)。
AC
GExpert对特定排列 PP,求最终剩余的元素个数的期望。仍求假想过程就是排列递增的概率,即求有多少个长度为 xix_i 的递增子序列。fl,if_{l, i}:以 ii 结尾,长度为 ll 的递增数列数量,fl+1,i=∑j<i,Pj<Pifl,jf_{l+1,i} = \sum_{j<i, P_j<P_i} f_{l, j},每层用树状数组辅助转移,O(N2log⁡N)\mathcal{O}(N^{2} \log N)。AC
LDHard有 NN 张卡牌和初始能量 MM。任意顺序打牌,牌有三类:能量 ≥1\ge 1,消耗 11 点能量并造成 DD 点伤害;能量 ≥2\ge 2,消耗 22 点能量并造成 DD 点伤害;消耗所有剩余能量 kk 并造成 k×Dk \times D 点伤害。求能造成的最大总伤害。把二费牌拆成两个单位,每个单位收益为 D/2D/2。设 XX 费牌最大伤害为 cc,将普通牌的单位收益统一减去 cc,问题化为:总费用不超过 MM,最大化修改后的收益之和,最后加上 McMc。贪心选出收益最大的 MM 个单位。若没有选出半张牌,得到的方案已经最优。否则,设被拆开的二费牌为 xx,答案形态可能为:扔掉 xx;扔掉 xx,加入一张未选中的一费牌;不扔 xx,删去一张已选中的一费牌。O(N)\mathcal{O}(N)。71+5
KEasy01 矩阵,判断是否满足 1 格边连通,在该 1 的连通块内部,恰好存在两个 0 连通块。补全边界后,有 1 个 1 的连通块,3 个 0 的连通块。O(MN)\mathcal{O}(M N)。AC
LMedium求不定方程 Ax1+Bx2+Cx3+Dx4=EAx_{1}+Bx_{2}+Cx_{3}+Dx_{4}=E 在 xi∈[L,R]x_{i}\in[L, R] 的整数解数量。变形为 Ax1+Bx2=E−Cx3−Dx4Ax_{1}+Bx_{2}=E-Cx_{3}-Dx_{4},折半枚举,O(V2log⁡V)\mathcal{O}(V^{2}\log V),其中 V=R−LV=R-L。AC