02 2025 档案
鲜花:经验、直觉、理性
摘要:不知道其他人有没有感觉。 题目难度上升之后,我感觉做题做起来越来越吃力了。很多时候对着一道题磕一下午,最后也没有太好的思路。 于是开始分析自己的思维。我想知道,究竟是什么使我想出了题目的正解,又是什么阻止了我想出正解。 分析我的思维,有三个词占据了主导地位:经验、直觉、理性。 经验是最先发挥作用的。
2025 USACO Feb 银组题解合集
摘要:A 考虑从大到小考虑每一个取值的数,如果能换就换,如果换了没用就不换。 实现上使用 vector 存下标,复杂度 。 #include<bits/stdc++.h> using namespace std; int t,n,m,a[1000005],flag,tim; vector<
CF Edu Round 174 题解合集
摘要:here. C 考虑最终合法的字符串,形如: 然后考虑对于每对 对答案的贡献是,它们中间 的个数,记为 ,。 然后考虑从左往右扫,每次遇到 往 ds 里加入一个 \(
CF Round 998 题解合集
摘要:here. E 考虑对 F 先删边再加边。 删边时,用并查集维护出 G 的联通性,如果 F 中的边 在 G 中不联通,就把它删去。 加边时,用并查集维护出 F 的联通性,如果 G 中的边 在 F 中不连通,就在 F 中加边 。 不难发现这样贪
CF Round 999 题解合集
摘要:here. 感觉出的都很不错,做起来很舒服。 C 考虑直接 DP。 设 表示考虑前 个人,第 个人是否说谎的方案数。 枚举第 个人是否说谎,得到转移: \[f_{i,1}=f_{i-1,0}[a_
CF Round 1005 题解合集
摘要:here. 困难场。 C 考虑贪心,我们在一个前缀只取正数,后缀只取负数,这样取一定可以取到最大值。 扫一遍记录前缀正数和和后缀负数和,枚举分割点即可。 复杂度 。 #include<bits/stdc++.h> #define int long long using namespa
abc393 题解合集
摘要:here. 啥啊。 越来越过分了是吧。 我现在不仅怀疑参赛者有人机,还怀疑出题者是人机。 D 以最中间的 作为基准点,两边向这个 靠拢即可。 复杂度 。 #include<bits/stdc++.h> #define int lon
CF Round 1002 题解合集
摘要:here 困难场。 C 重要观察:只有每行的后缀 有用。 考虑归纳证明,设 为一行后缀 的个数。 对于 的情况,想要让 值为 ,必须选择这个后缀,否则其他后缀的和 一定 ; 对于 的情况,在之前
CF Round 1004 题解合集
摘要:here. here. 感觉是 good round。 2C 唯一没做明白的题。 经过若干手玩,发现在最优次数内达到目标,加的值是固定的。 也就是说,如果我加了 ,想要达到目标,以后不可能再加 。 又因为感觉答案上界很小,所以直接暴搜即可。 复杂度 。 #in
鲜花:attention is all you need
摘要:给因为标题点进来的人道歉,这篇鲜花和 transformer 没有半毛钱关系。 今天重刷了一遍 信息学竞赛 (OI) 究竟发生了什么?,第一次看是在 CSP 出发前一天的晚自习。 这个视频完全改变了我的 OI 观,也使我在 NOIP 的备赛阶段有了突破性的进步。 因此,我觉得有必要向所有人安利这个视
abc392 题解合集
摘要:here. 草忘写了,赶紧补档。 E 这种题都能被放到 E 了吗。 考虑最小化答案为 , 是联通块个数。 考虑构造答案,首先把能加的边加上,然后用 set 和并查集维护当前联通块集合,对于之前没加过的边,能加就加。 总体复杂度 \(O(m\
题解:mex times mex(省选模拟赛 T2)
摘要:前言 题目链接:here. 这是一个 T1 读错题刚 T2 导致垫底的可怜人的博客。 思路分析 首先这个柿子一看就是魔改的 FWT 的卷积。 考虑分治处理。 对于当前分治层 ,考虑求出 。 如果我们将 三个序列都分为 段,分别记为 \(A_
题解:P9989 [Ynoi Easy Round 2023] TEST_69
摘要:前言 注意到 test_69 没有 69 个 test。 思路分析 我们知道,每次对于一个数取 gcd 时,如果这个数改变,那么至少减小至原来的 。 然后考虑怎么判断区间每个数的 gcd 是否改变,不难发现维护区间 lcm,如果 k 是 区间 lcm 的倍数,那么区间里
题解:P8393 [BalticOI 2022] Stranded Far From Home (Day2)
摘要:前言 展现 mkr 极高 OI 水平题。 思路分析 首先考虑在序列上怎么做。 在序列上,考虑这样一种分治算法:每次选取序列的最大值,它一定可以把整个序列吃完,然后考虑左右区间的最大值,它们一定可以吃掉左右区间,如果它们能吃掉整个序列的最大值,它们一定能吃掉整个序列。然后分治左右区间。 不难发现这就是
鲜花:统计主义
摘要:zak 的计数我听不了一点。 于是来写很久以前就想写的 idea。 以上可以算作废话。 感谢 ds 让我用上了免费的大语言模型。 有时候比较闲的时候就会,问它一些弱智吧里的神秘文案,或者是让它解高一数学的压轴题,再或者是让它写即兴散文。 发现 ds 的表现的确很优秀,尤其是文艺范很浓,不知道拿什么语
题解:[THUPC 2021] 鬼街
摘要:前言 不希望被称为减半报警器模板,因为它一不是减半,二就只有这一个题。 思路分析 考虑暴力,预处理出 的质因数集合,每次在对应位置上对所有报警器加,如果有一个炸了就删除它。 考虑优化方向,每次我们在对应位置单点修改,能不能对这个位置上的报警器合并处理? 问题是,我们每个报警器都牵连着它所
题解:Coprime Permutation
摘要:前言 一种很新的排列计数。 思路分析 考虑将排列视作映射,初始令 ,考虑哪些位置能够进行交换。 设 表示 的质因子集合,为了方便,考虑用元素乘积刻画这个集合。 不难发现,对于 的任意位置 ,它们是等价的,也就
题解:[AGC044D] Guess the Password
摘要:前言 比较可做的交互题,瓶颈在于编辑距离的转化。 思路分析 首先考虑编辑距离是困难的,考虑弱化条件。 因为本题要求确定一个字符串,因此,可以尝试将编辑距离转化为判定子序列相关的信息。 具体地,考虑,对于两个字符串 , 是 的子序列当且仅当 \(f(S,T)=|S|
题解:The Game (Easy Version & Hard Version)
摘要:前言 这是最近 VP CF 遇到的。 感觉是套着博弈壳子的树上 DS,做起来思路也很自然,于是记录之。 思路分析 E1 经过手玩样例发现,对于 ,如果存在 不在 子树内且 ,此时 最大的 一定是必胜点。 原因是,
题解:Many Many Cycles
摘要:前言 好题。 第一次听说切边等价。 思路分析 首先玩两个环的情况。令环长分别为 ,重合部分的长度为 ,那么答案为: 对于大于两个环的情况,我们可以任意拆解成两个环的情况,再进行
题解:Minimize Inversions Number
摘要:前言 好题。 思路分析 分析一下答案的组成: 令 , 表示选出的集合, 表示集合 的逆序对数, 表示这个序列的逆序对数: \[to
题解:[AGC054D] (ox)
摘要:前言 好题。 思路分析 一个朴素的想法是,对于每种字符,我们决策它放的位置,做四路归并,这样复杂度为 。 但是这样显然没优化前途。考虑做一些观察。 o 存在与否并不重要:o 放在任何位置都是合法的,所以为了最小化代价,我们把 o 放在原来的位置即可; () 的移动方案和 x 的移
CF Round 1001 题解合集
摘要:here. 草怎么是贪心专场。 问就是不会 F。 C 注意到操作一至多只会进行一次,进行两次就抵消了。 所以直接枚举所有可能操作取最大值即可。 注意要开 long long。 总体复杂度 。 #include<bits/stdc++.h> #define int long lo
题解:P11617 递推
摘要:前言 第一次在 OI 中见到求数列极限的题,有点意思。 但是为什么会过这么多人啊。 思路分析 做一点尝试: 然后对于相同的 ,合并同类项: \[\sum_{i=m}\sum_{j=0}^{m} r_j
abc391 题解合集
摘要:here. 感觉这场难度不大啊,我讨厌手速场。 D 有一些细节的模拟题。 消除的总行数为所有列中方格数量的最小值,下面记为 。 设每个方格在本列中从下到上处在 的位置,那么: ,这个方格被消除的时间为所有处在 位置的格子中,