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\) 的放置方式的数量。
posted @ 2024-08-25 16:53  liukejie  阅读(6)  评论(0编辑  收藏  举报