NOIP20240802 也是 CF1997
NOIP20240802
T1 Strong Password
- 题意:在一个由小写字母组成的字符串 \(s\) 的任意位置插入一个小写字母(包括最前面和最后面),使得新字符串的权值最大化,并输出其中一个符合条件的新字符串。
权值的计算规则如下:
-
如果某个字符与前一个字符不同,或者它是第一个字符,则它的贡献值为 \(2\) 点。
-
如果某个字符与前一个字符相同,则它的贡献值为 \(1\) 点。
-
题解:自己模拟。
T2 Make Three Regions
- 题意:\(t\) 组数据,每组数据给一个 \(2×n\) 的矩阵,每个格点是
.
或x
的一种,保证所有的.
构成一个联通块。
问有多少个格点满足:如果该格点为 .
且将该格点改为 x
,则矩阵被分成三个联通块。
- 题解:如果满足
... 或 x.x
x.x ...
的情况,则可以统计答案。
T3 Even Positions
- 题意:自己看
- 题解:若遇到
(
,加 \(3\),若遇到)
,加 \(1\),我无法证明。 - 代码
T4 Even Positions
- 题意:给出一棵根为 \(1\) 的有根点带权树,你可以进行任意次操作,每次将 \(a_v+1\),且使 \(v\) 的子树上的点 \(a_u-1\),每次操作后权值不能为负,问根节点的最大权值。
- 题解:树上贪心。分三种情况:
- 叶子节点:无需操作。
- 根节点:求得其儿子的最小值,直接与根节点相加即可。
- 普通节点:求得其儿子的最小值,由于是要将子树中的每一个节点的值减少,所以对于该节点的上一层,我们只能取该节点及其儿子的最小值作为贡献,所以我们对该节点及其儿子的最小值平均地分配权值。
- 代码
T5 level Up
- 题意:打潘奕帆操作是指顺次对于 \([1,n]\) 的每个潘奕帆,每个潘奕帆有 \(a_i\) 的等级,如果你的等级 \(lv\) 严格大于潘奕帆的等级 \(a_i\),它就会逃跑。反之你会和它战斗。你每与 \(k\) 个潘奕帆战斗就会升一级,即 \(lv←lv+1\)。现在有若干组查询,每次查询 \(i,x\) 表示询问 \(k=x\) 时,你是否会和第 \(i\) 个潘奕帆战斗。
- 题解:二分加树状数组加优化。
- 代码
T6 Chips on a Line 不会
- 题意:有 \(n\) 个筹码,需要将它们放置在从 \(1\) 到 \(x\) 的点上,可以进行四种操作来减少筹码的数量,目标是找到一种放置方式,使得通过一系列操作后,筹码的数量最少。需要计算出所有满足特定成本 \(m\) 的放置方式的数量。