02 2025 档案

摘要:不知道其他人有没有感觉。 题目难度上升之后,我感觉做题做起来越来越吃力了。很多时候对着一道题磕一下午,最后也没有太好的思路。 于是开始分析自己的思维。我想知道,究竟是什么使我想出了题目的正解,又是什么阻止了我想出正解。 分析我的思维,有三个词占据了主导地位:经验、直觉、理性。 经验是最先发挥作用的。 阅读全文
posted @ 2025-02-25 21:58 _Kenma 阅读(148) 评论(10) 推荐(6)
该文被密码保护。
posted @ 2025-02-23 23:13 _Kenma 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-02-23 18:00 _Kenma 阅读(22) 评论(0) 推荐(1)
摘要:A 考虑从大到小考虑每一个取值的数,如果能换就换,如果换了没用就不换。 实现上使用 vector 存下标,复杂度 \(O(n)\)。 #include<bits/stdc++.h> using namespace std; int t,n,m,a[1000005],flag,tim; vector< 阅读全文
posted @ 2025-02-22 19:07 _Kenma 阅读(125) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-02-21 15:06 _Kenma 阅读(4) 评论(0) 推荐(0)
摘要:here. C 考虑最终合法的字符串,形如: \[1,2,2,2,\cdots,2,2,2,3 \]然后考虑对于每对 \(1,3\) 对答案的贡献是,它们中间 \(2\) 的个数,记为 \(cnt\),\(2^{cnt}-1\)。 然后考虑从左往右扫,每次遇到 \(1\) 往 ds 里加入一个 \( 阅读全文
posted @ 2025-02-20 09:07 _Kenma 阅读(43) 评论(0) 推荐(0)
摘要:here. E 考虑对 F 先删边再加边。 删边时,用并查集维护出 G 的联通性,如果 F 中的边 \((x,y)\) 在 G 中不联通,就把它删去。 加边时,用并查集维护出 F 的联通性,如果 G 中的边 \((x,y)\) 在 F 中不连通,就在 F 中加边 \((x,y)\)。 不难发现这样贪 阅读全文
posted @ 2025-02-18 23:00 _Kenma 阅读(15) 评论(0) 推荐(0)
摘要:here. 感觉出的都很不错,做起来很舒服。 C 考虑直接 DP。 设 \(f_i,0/1\) 表示考虑前 \(i\) 个人,第 \(i\) 个人是否说谎的方案数。 枚举第 \(i\) 个人是否说谎,得到转移: \[f_{i,0}=f_{i-1,1} \]\[f_{i,1}=f_{i-1,0}[a_ 阅读全文
posted @ 2025-02-18 17:06 _Kenma 阅读(19) 评论(0) 推荐(1)
摘要:here. C 考虑这样一种构造: \[1,2,3,\cdots,n-1,n,1,2,3,\cdots,n-1,n \]或者是: \[1,2,3,\cdots,n-2,n-1,n,1,2,3,\cdots,n-2,n-1 \]这里的 \(n\) 不是题面中的 \(n\)。 但是经检查,这种构造会在 阅读全文
posted @ 2025-02-17 21:28 _Kenma 阅读(11) 评论(0) 推荐(0)
摘要:here. 困难场。 C 考虑贪心,我们在一个前缀只取正数,后缀只取负数,这样取一定可以取到最大值。 扫一遍记录前缀正数和和后缀负数和,枚举分割点即可。 复杂度 \(O(n)\)。 #include<bits/stdc++.h> #define int long long using namespa 阅读全文
posted @ 2025-02-17 16:31 _Kenma 阅读(33) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-02-16 16:06 _Kenma 阅读(13) 评论(0) 推荐(0)
摘要:md 太对了驳不了一点。 阅读全文
posted @ 2025-02-16 12:45 _Kenma 阅读(103) 评论(2) 推荐(6)
摘要:here. \(perf:2017\) 啥啊。 越来越过分了是吧。 我现在不仅怀疑参赛者有人机,还怀疑出题者是人机。 D 以最中间的 \(1\) 作为基准点,两边向这个 \(1\) 靠拢即可。 复杂度 \(O(n)\)。 #include<bits/stdc++.h> #define int lon 阅读全文
posted @ 2025-02-15 21:24 _Kenma 阅读(44) 评论(0) 推荐(1)
摘要:here 困难场。 C 重要观察:只有每行的后缀 \(1\) 有用。 考虑归纳证明,设 \(n\) 为一行后缀 \(1\) 的个数。 对于 \(n=1\) 的情况,想要让 \(mex\) 值为 \(2\),必须选择这个后缀,否则其他后缀的和 一定 \(>1\); 对于 \(n>1\) 的情况,在之前 阅读全文
posted @ 2025-02-13 19:39 _Kenma 阅读(23) 评论(0) 推荐(0)
摘要:here. here. 感觉是 good round。 2C 唯一没做明白的题。 经过若干手玩,发现在最优次数内达到目标,加的值是固定的。 也就是说,如果我加了 \(9\),想要达到目标,以后不可能再加 \(99\)。 又因为感觉答案上界很小,所以直接暴搜即可。 复杂度 \(O(能过)\)。 #in 阅读全文
posted @ 2025-02-13 10:17 _Kenma 阅读(27) 评论(0) 推荐(0)
摘要:给因为标题点进来的人道歉,这篇鲜花和 transformer 没有半毛钱关系。 今天重刷了一遍 信息学竞赛 (OI) 究竟发生了什么?,第一次看是在 CSP 出发前一天的晚自习。 这个视频完全改变了我的 OI 观,也使我在 NOIP 的备赛阶段有了突破性的进步。 因此,我觉得有必要向所有人安利这个视 阅读全文
posted @ 2025-02-12 22:20 _Kenma 阅读(96) 评论(1) 推荐(3)
该文被密码保护。
posted @ 2025-02-11 18:56 _Kenma 阅读(32) 评论(3) 推荐(1)
摘要:here. \(perf:2341\) 草忘写了,赶紧补档。 E 这种题都能被放到 E 了吗。 考虑最小化答案为 \(cnt-1\),\(cnt\) 是联通块个数。 考虑构造答案,首先把能加的边加上,然后用 set 和并查集维护当前联通块集合,对于之前没加过的边,能加就加。 总体复杂度 \(O(m\ 阅读全文
posted @ 2025-02-10 11:17 _Kenma 阅读(28) 评论(0) 推荐(2)
摘要:前言 题目链接:here. 这是一个 T1 读错题刚 T2 导致垫底的可怜人的博客。 思路分析 首先这个柿子一看就是魔改的 FWT 的卷积。 考虑分治处理。 对于当前分治层 \(A*B=C\),考虑求出 \(C\)。 如果我们将 \(A,B,C\) 三个序列都分为 \(3\) 段,分别记为 \(A_ 阅读全文
posted @ 2025-02-09 19:46 _Kenma 阅读(55) 评论(1) 推荐(0)
摘要:前言 注意到 test_69 没有 69 个 test。 思路分析 我们知道,每次对于一个数取 gcd 时,如果这个数改变,那么至少减小至原来的 \(\frac{1}{2}\)。 然后考虑怎么判断区间每个数的 gcd 是否改变,不难发现维护区间 lcm,如果 k 是 区间 lcm 的倍数,那么区间里 阅读全文
posted @ 2025-02-09 19:25 _Kenma 阅读(12) 评论(0) 推荐(0)
摘要:前言 展现 mkr 极高 OI 水平题。 思路分析 首先考虑在序列上怎么做。 在序列上,考虑这样一种分治算法:每次选取序列的最大值,它一定可以把整个序列吃完,然后考虑左右区间的最大值,它们一定可以吃掉左右区间,如果它们能吃掉整个序列的最大值,它们一定能吃掉整个序列。然后分治左右区间。 不难发现这就是 阅读全文
posted @ 2025-02-09 19:17 _Kenma 阅读(15) 评论(0) 推荐(0)
摘要:zak 的计数我听不了一点。 于是来写很久以前就想写的 idea。 以上可以算作废话。 感谢 ds 让我用上了免费的大语言模型。 有时候比较闲的时候就会,问它一些弱智吧里的神秘文案,或者是让它解高一数学的压轴题,再或者是让它写即兴散文。 发现 ds 的表现的确很优秀,尤其是文艺范很浓,不知道拿什么语 阅读全文
posted @ 2025-02-09 17:48 _Kenma 阅读(112) 评论(6) 推荐(4)
摘要:前言 不希望被称为减半报警器模板,因为它一不是减半,二就只有这一个题。 思路分析 考虑暴力,预处理出 \(x\) 的质因数集合,每次在对应位置上对所有报警器加,如果有一个炸了就删除它。 考虑优化方向,每次我们在对应位置单点修改,能不能对这个位置上的报警器合并处理? 问题是,我们每个报警器都牵连着它所 阅读全文
posted @ 2025-02-07 22:56 _Kenma 阅读(25) 评论(0) 推荐(1)
摘要:前言 一种很新的排列计数。 思路分析 考虑将排列视作映射,初始令 \(p_i=i\),考虑哪些位置能够进行交换。 设 \(s_i\) 表示 \(p_i\) 的质因子集合,为了方便,考虑用元素乘积刻画这个集合。 不难发现,对于 \(s_i=s_j\) 的任意位置 \((i,j)\),它们是等价的,也就 阅读全文
posted @ 2025-02-07 22:42 _Kenma 阅读(39) 评论(0) 推荐(0)
摘要:前言 比较可做的交互题,瓶颈在于编辑距离的转化。 思路分析 首先考虑编辑距离是困难的,考虑弱化条件。 因为本题要求确定一个字符串,因此,可以尝试将编辑距离转化为判定子序列相关的信息。 具体地,考虑,对于两个字符串 \(S,T\),\(S\) 是 \(T\) 的子序列当且仅当 \(f(S,T)=|S| 阅读全文
posted @ 2025-02-07 21:56 _Kenma 阅读(9) 评论(0) 推荐(0)
摘要:前言 这是最近 VP CF 遇到的。 感觉是套着博弈壳子的树上 DS,做起来思路也很自然,于是记录之。 思路分析 E1 经过手玩样例发现,对于 \(x\),如果存在 \(y\) 不在 \(x\) 子树内且 \(w_y > w_x\),此时 \(w_x\) 最大的 \(x\) 一定是必胜点。 原因是, 阅读全文
posted @ 2025-02-05 16:29 _Kenma 阅读(73) 评论(0) 推荐(0)
摘要:前言 好题。 第一次听说切边等价。 思路分析 首先玩两个环的情况。令环长分别为 \(c_1,c_2\),重合部分的长度为 \(s\),那么答案为: \[\gcd(c_1,c_2,c_1+c_2-2s)=\gcd(c_1,c_2,2s) \]对于大于两个环的情况,我们可以任意拆解成两个环的情况,再进行 阅读全文
posted @ 2025-02-04 22:48 _Kenma 阅读(66) 评论(0) 推荐(0)
摘要:前言 好题。 思路分析 分析一下答案的组成: 令 \(d_i=\sum_{j=1}^{i-1} [p_i<p_j]-\sum_{j=1}^{i-1}[p_i>p_j]\),\(S\) 表示选出的集合,\(cnt\) 表示集合 \(S\) 的逆序对数,\(tot\) 表示这个序列的逆序对数: \[to 阅读全文
posted @ 2025-02-04 22:19 _Kenma 阅读(19) 评论(0) 推荐(0)
摘要:前言 好题。 思路分析 一个朴素的想法是,对于每种字符,我们决策它放的位置,做四路归并,这样复杂度为 \(O(n^4)\)。 但是这样显然没优化前途。考虑做一些观察。 o 存在与否并不重要:o 放在任何位置都是合法的,所以为了最小化代价,我们把 o 放在原来的位置即可; () 的移动方案和 x 的移 阅读全文
posted @ 2025-02-04 21:49 _Kenma 阅读(15) 评论(0) 推荐(0)
摘要:here. 草怎么是贪心专场。 问就是不会 F。 C 注意到操作一至多只会进行一次,进行两次就抵消了。 所以直接枚举所有可能操作取最大值即可。 注意要开 long long。 总体复杂度 \(O(tn^3)\)。 #include<bits/stdc++.h> #define int long lo 阅读全文
posted @ 2025-02-02 19:23 _Kenma 阅读(54) 评论(0) 推荐(1)
摘要:前言 第一次在 OI 中见到求数列极限的题,有点意思。 但是为什么会过这么多人啊。 思路分析 做一点尝试: \[\sum_{i=m} \sum_{j=0}^{m} r_ja_{i-j}=0 \]然后对于相同的 \(a_i\),合并同类项: \[\sum_{i=m}\sum_{j=0}^{m} r_j 阅读全文
posted @ 2025-02-02 12:15 _Kenma 阅读(12) 评论(0) 推荐(0)
摘要:here. 感觉这场难度不大啊,我讨厌手速场。 D 有一些细节的模拟题。 消除的总行数为所有列中方格数量的最小值,下面记为 \(sum\)。 设每个方格在本列中从下到上处在 \(k\) 的位置,那么: \(k \le sum\),这个方格被消除的时间为所有处在 \(k\) 位置的格子中,\(x\) 阅读全文
posted @ 2025-02-02 12:13 _Kenma 阅读(120) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-02-01 11:36 _Kenma 阅读(31) 评论(0) 推荐(0)