2023.8.26 LGJ Round

时间:2023-08-26
本文章向大家介绍2023.8.26 LGJ Round,主要内容包括A (CF388C)、B、C (CF1609E)、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

A (CF388C)

\(n\) 个序列,每个序列长度 \(m_i\),每个序列的每个数有权值 \(c{i,j}\)\(\sum m_i\le n\le 10^5\).
A 和 B 轮流行动,A 只能选择一个序列获得其开头数的权值并删去, B 只能选择一个序列获得其末尾数的权值并删去。
问 A,B 分别最多获得多少权值。

若所有序列长度为偶数,可以证明,A 和 B 一定是各自取一半。
举个例子:若出现这样:

AAAB
ABBB

那么只有 \(c_{1,3}>c_{2,2}\),A 才会这么做。
但是对于 B,B 始终比 A 先取到 \(c_{1,3}\),所以上面是不对的。

若有长度为奇数怎么办呢?
A 和 B 还是各自取一半。剩下的中间那个数若 A 先手就先取到了,但 B 可以取下一个。
把中间的权值从大到小排序,奇数位置的 A 选择,偶数位置的 B 选择。

B

一张图 \(n,m\le 2e5\),定义一条路径的“能量”是经过每条边的权值最大值。
每次询问给定 \(q\) 个点,询问两两之间路径“能量”的最大值。 \(\sum q\le 2e5\)

模仿 NOIP2013 货车运输,先建一个最小生成树(那题是最大)。
然后两点之间所有路径的最小能量就是树上的路径的能量。

对于询问 \(q\) 个点,可以建虚树,再 Dp.

C (CF1609E)

一个字符串 \((n\le 1e5)\),只包含 'a','b','c' 三种字符
\(q\) 次修改一个位置的字符,修改完询问“最小修改多少个字符使得不存在 "abc" 的子序列”。

考虑静态怎么做:
\(f_{i,j}\) 表示第 \(i\) 位,当前匹配到 "abc" 的第 \(j\) 位,最少修改几个字符。
\(f_{i,0}=f_{i-1,0}+[s_i='a']\).
\(f_{i,1}=\min(f_{i-1,0}+[s_i\not='a'],f_{i-1,1}+[s_i='b']\).
\(f_{i,2}=\min(f_{i-1,1}+[s_i\not='b'],f_{i-1,2}+[s_i='c']\).

原文地址:https://www.cnblogs.com/Simon-Gao/p/17658523.html