博客广场

题解、比赛复盘与学习记录

比赛总结 zhuyqi 2026-8-16 15:11:05

8.16总结

8.16总结 今天心情愉悦,又是AK的一天。 考试题目 T1 : Hyperset 这题本质是 SET 卡牌合法三元组计数。 给定 n 张互不相同的卡片,每张有 k 个位置,每个位置是 S/E/T。三张卡合法的条件是:对每一位来说,三个字符要么全相同,要么刚好是 S/E/T 各一个。 核心思路: 任意确定两张卡 a 和 b,如果它们想和第三张卡组成合法集合,

30 1 1
比赛总结 zhuyqi 2026-8-15 12:23:41

8.15 日总

T1 题目分析 n名选手各有若干筹码,进行n-1场比赛。每场随机选两人,筹码多的赢(相同则随机),赢家获得输家所有筹码。求哪些选手有非零概率夺冠。 核心观察 一个选手能否夺冠,取决于他能否(通过合理的比赛顺序安排)"吃掉"所有其他选手。由于比赛对手是随机选择的,只要存在一种可行的比赛顺序让该选手最终赢,他就有非零概率夺冠。 关键结论:筹码较小的选手们如果能联

21 1 0
比赛总结 StArWaLk 2026-8-12 19:40:09

Day10

A Asya And Kittens:每次合并两个集合时新建一个父节点,左右儿子分别指向两个集合的根,并查集维护。最后得到一棵二叉树,DFS先左后右输出叶子编号,就是还原的原始序列。 code #include <bits/stdc++.h> using namespace std; const int N = 1.5e5 + 5; int n, head[

13 0 0
比赛总结 zhuyqi 2026-8-12 15:29:03

8.12总结

8.12总结 T1 Asya and Kittens 题意 有 n 只小猫,编号 1 到 n,分别放在一排 n 个格子中(每个格子一只)。相邻格子之间有隔板,共 n-1 块。每天 Asya 观察到相邻格子里的两只小猫 x_i 和 y_i 想一起玩,于是拆掉它们之间的隔板,把两个格子合并成一个。 给出 n-1 天里每天的 (x_i, y_i),求一个合法的初始

15 0 0
比赛总结 zhuyqi 2026-8-11 17:33:21

8.11总结

8.11 今天主要是把几个算法融合在一起考,有两道题在考场上没想到~~(感觉自己变唐了)~~ T1 Alyona and Spreadsheet 题意 给定一个 n 行 m 列的整数矩阵(1 ≤ n·m ≤ 100000,1 ≤ a[i][j] ≤ 10^9)。 定义第 j 列是非递减的,当且仅当 a[i][j] ≤ a[i+1][j] 对所有 i 成立。

15 0 0
比赛总结 陈俊霖 2026-8-10 21:01:32

8月Day8(未完成)

A.Longest k-Good Segment 核心思路 采用滑动窗口(双指针)维护一个合法区间,保证区间内不同元素个数不超过 kk。枚举右端点,若加入新元素后不同元素个数超过 kk,则移动左指针缩小区间,直到合法。在每次合法时更新最长区间的左右端点。 具体步骤 读入 n,kn,k 和数组 aa(下标从 0 开始)。 初始化左指针 left = 0,不同元

16 0 0
比赛总结 zhuyqi 2026-8-10 17:16:01

8.10总结

8.10总结 T1 Longest k-Good Segment 链接:Longest k-Good Segment - 题目详情 - QY code 题意 给定一个长度为 n 的整数数组 a,定义连续子段(segment)为数组中一个或多个连续的元素。如果一个连续子段中包含的不同元素个数不超过 k 个,则称这个子段为 k-good 子段。 请你找出任意一个

15 0 0
比赛总结 zhuyqi 2026-8-10 0:56:16

8.9 Codeforces Div.2 A-D 总结

8.9 Codeforces Div.2 A-D 总结 怎么说呢,今天我没打后面两题的原因是做不出来了(总之就是太菜了)。 A. Three Numbers on the Blackboard 题目:给定三个非负整数 a,b,c,每次可任选一个数替换为另外两数之和。求任意次操作后三元组的最小极差(最大值 − 最小值)。 结论:排序为 x ≤ y ≤ z,答案

15 0 0
比赛总结 StArWaLk 2026-8-9 17:49:28

Day7

t1 Move Brackets:遍历括号串,遇到左括号计数器加1,遇到右括号时若有未匹配的左括号则匹配掉(计数器减1),否则这个右括号无法匹配,答案加1。最终答案就是需要移动的右括号数量。 #include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false)

18 0 0
比赛总结 陈俊霖 2026-8-9 17:35:34

8月Day7

A.Move Brackets 核心思路 将一个括号序列调整为合法括号序列,最少操作次数等于前缀和达到的最小负值的绝对值。因为每次操作可将任意一个括号移到开头或结尾,而移动右括号到开头(或左括号到结尾)能消除前缀中的负平衡。所需移动的括号数即为最深的不平衡程度。 具体步骤 初始化平衡值 bal = 0,最小前缀和 mn = 0。 遍历字符串 s 的每个字符:

15 0 0
比赛总结 zhuyqi 2026-8-9 14:54:17

8.9总结

8.9总结 今天我们考的内容不是单纯的某一个算法,基本上都是把几个算法揉到一起考。实际上就是考我们对算法的熟悉度。但是我因为最后一题RE只得了96分,没有成功AK(这个比昨天还可惜) 我发现了,边写题目边写思路和细节处理AC率会变高 (还有就是总结写的快一点) CF1374C Move Brackets (签到题) 链接:Move Brackets - 题目

17 0 6
比赛总结 陈俊霖 2026-8-8 21:00:21

8月Day2

A.Mortal Kombat Tower 核心思路 这是一道经典的动态规划题。游戏规则是两人轮流行动,朋友先手。朋友面对困难 Boss(值为 1)时必须消耗跳过点,而你可以直接击败任意 Boss。我们需要最小化朋友使用的跳过点总数。 由于每次行动可以击败 1 或 2 个 Boss,且行动者交替,我们只需记录当前轮到谁(朋友或你)以及当前已经消耗的跳过点数,

17 0 0
文章 StArWaLk 2026-8-8 20:23:31

Day6

t1 :比较两个字符串,从左到右找到第一个不同的位置。删除该位置后若剩余字符完全相同,则该位置可行。因为第一个字符串总比第二个多一个字符,所以只需检查每个可能删除的位置,看删除后是否与第二个字符串相等。输出可行位置总数及所有位置编号,若无可行方案则输出0。 #include<bits/stdc++.h> using namespace std; char s

24 0 0
比赛总结 陈俊霖 2026-8-8 20:13:10

8月Day6

A.Spelling Check 核心思路 通过比较两个字符串的前缀和后缀,确定所有可能被删除的字符位置。因为第一个字符串比第二个多一个字符,删除一个字符后剩余部分必须与第二个字符串完全匹配。 具体步骤 从左向右扫描:比较 s 与 t,找到第一个 s[i] != t[i] 的位置 left。若全部匹配,则 left = m(即最后一个字符可删除)。 从右向左

23 0 0
比赛总结 zhuyqi 2026-8-8 16:22:51

8.8总结

今天有一道题,我的题面没看明白,所以那一道题一分都没拿,有点可惜了,但是其他的题目还是有难度的,特别是第6题,证明我推了一页纸。 T1:Spelling Check 链接:Spelling Check - 题目详情 - QY code 这是道签到题,所以直接贴个代码吧: #include <bits/stdc++.h> using namespace std

14 2 2
比赛总结 zhuyqi 2026-8-7 18:11:23

8.7总结

8.7总结 今天的题目都很水啊,没有什么很难的题目,除了最后一道没时间打以外,没有什么问题了 T1:Air Conditioners 链接:Air Conditioners - 题目详情 - QY code 题目大意: 有一条长度为 n 的格子带,编号从 1 到 n。 其中有 k 台空调,第 i 台空调放在格子 a[i],设定温度为 t[i]。 对于每个格子

15 0 0