20260814 - 杂题一锅炖

一、比赛基本情况

  • 比赛日期:2026 年 8 月 14 日
  • 比赛时长:3.00000000000000004 小时
  • 比赛得分:4.00000000000000004 分
  • 比赛排名:第 7 名

二、比赛整体回顾

这场比赛我按照 A、C、D、E、B、F 的顺序做题。

™ 的 vscode 输入一个数 RE,写了个主函数 RE,空代码也 RE,Dev C++ 靠谱。

T1 因为某某编译器导致写什么都 RE,卡了 30 min。

T2 由于二分老是写错,然后看下道题了。

T3 简单的树形 DP,秒了。

T4 观察了一会,写了个离谱做法,过了。

T5 简单的枚举,秒了。

T6 之前做过一个题目,CF1526C2,也是反贪的题目,和这道题思想一模一样。


三、题目复盘

A - Grandma Capa Knits a Scarf

  • 本题得分\(100\)
  • 开始时间:14:00:00
  • 结束时间:14:37:45
  • 总用时间:0:37:45

初始思路

枚举每一个字符然后判断是否是可以构成回文。


考场解题过程

首先先搞了一个乱搞做法,没有对;(应该检查的)

随后重新写了一个代码,然后就过了。


赛后题解

我们可以枚举删去的字符,再用扫一遍这个字符串,计算出删去的字符数,记录下最小值即可;当双指针指向的两个字符不同,也不为删去的字符时,当前方案不合法。


复杂度

  • 时间复杂度:\(O(nk)\)\(k\) 为字符集,这里取 \(26\)
  • 空间复杂度:\(O(n)\)

本题总结

这道题不难,但是要边界情况。

以后做完简单题也不能马上提交,至少要自己测试两组数据。


B - Jumping Through Segments

  • 本题得分\(100\)
  • 开始时间:14:37:45
  • 结束时间:16:17:41
  • 总用时间:01:39:56

初始思路

一看就知道是二分,然后 check 就是看两端是否可以到达,可以就行不可以就不行。


考场解题过程

首先先分类讨论一坨东西,后面发现就是简单的比较(所以说如果一个思路想太久了,就换一个)


赛后题解

判断时记录每次可以跳到的边界,若跳最远也无法抵达目标线段则不符合。跳 \(n\) 次若都能跳到目标线段上即是可行的。


复杂度

  • 时间复杂度:\(O(n\log_2n)\)
  • 空间复杂度:\(O(n)\)

本题总结

这道题不难,注意不要想歪了。


C - Infected Tree

  • 本题得分\(100\)
  • 开始时间:14:37:45
  • 结束时间:15:01:50
  • 总用时间:00:24:05

初始思路

看到最大保留就想到了树形 DP,观察了一下发现不需要用到数据结构。


考场解题过程

写出转移方程秒了。


赛后题解

树形 DP,状态就是 dp[i] 表示在以 i 为根的子树中,若 i 被感染病毒,最多能保留多少节点。

假如要删除左边,就保留了 siz[ls] - 1 的贡献,我们任然可以保留 dp[rs] 个点,另外的同理。

所以转移方程就是 dp[i] = max(dp[ls] + siz[rs] - 1, dp[rs] + siz[ls] - 1)。


复杂度

  • 时间复杂度:\(O(n)\)
  • 空间复杂度:\(O(n)\)

本题总结

树形 DP 的好题,还总结了一道好题 P3000。


D - Array Destruction

  • 本题得分\(100\)
  • 开始时间:15:01:50
  • 结束时间:15:37:40
  • 总用时间:00:35:50

初始思路

首先如果最高的都不选进来,一定构成不了,所以可以枚举和哪一个配对。


考场解题过程

首先因为是有重复的,所以得用 multiset,一开始开的 set 调了很久,


赛后题解

由于枚举了和哪个配对,所以可以用 multiset 快速维护。


复杂度

  • 时间复杂度:\(O(n^2\log_2n)\),常数很大。
  • 空间复杂度:\(O(n)\)

本题总结

主要性质是观察到如果最高的都不选进来,一定构成不了,如果这里懂了,就会做了。


E - Numerical Sequence (easy version)

  • 本题得分\(100\)
  • 开始时间:15:37:40
  • 结束时间:15:56:55
  • 总用时间:00:19:15

初始思路

由于很小,所以可以枚举。


考场解题过程

枚举是 \(10^k\) 的数,如果会进位就加一。


赛后题解

枚举第 \(k\) 位,如果还不够,就继续,否则继续增加。


复杂度

  • 时间复杂度:\(O(?)\),玄学。
  • 空间复杂度:\(O(1)\)

本题总结

本题主要考察暴力怎么写,会写暴力就会吧。


F - Money Buys Less Happiness Now

  • 本题得分\(100\)
  • 开始时间:15:56:55
  • 结束时间:16:46:03
  • 总用时间:00:49:08

初始思路

想到了 CF1526C2 的做法,就是如果已经欠钱了,就丢掉最大的。


考场解题过程

就是差不多的代码。


赛后题解

首先考虑没有欠钱,直接买。

否则肯定丢掉最大的一个,这样最优。


复杂度

  • 时间复杂度:\(O(n\log_2n)\)
  • 空间复杂度:\(O(n)\)

本题总结

双倍经验 CF1526C2。


四、整体反思

做得较好的地方

后面的题目都能想到解题思路。


需要改进的地方

T1 因为编译器导致浪费 30min,下次直接用 Dev-C++ 传统。

T2 想复杂了,要先到草稿纸上画一画,以后遇到不会的题,不能一直停留在同一种思路上。

posted @ 2026-08-14 19:46  AKCoder  阅读(32)  评论(1)    收藏  举报