摘要: 排列的环分解 单次交换操作的效果: 当交换元素属于不同环时 \(\to\) 合并两个环 当交换元素属于同一个环时 \(\to\) 将该环分裂为两个 由于所有环的长度之和为 \(N\),且每个环长度均为正整数,因此不同的环长度数量最多只有 \(O(\sqrt{N})\) 种 位运算 定义 LSB(w) 阅读全文
posted @ 2025-09-03 16:26 V_Melville 阅读(23) 评论(0) 推荐(0)

摘要: 1. 在两个数列之间 有两个整数数列 \(a_1,a_2,\cdots,a_n\) 和 \(b_1,b_2,\cdots,b_n\)。我们的任务是找出满足以下条件的数列 \(c_1,c_2,\cdots,c_n\): 对 \(i=1,2,\cdots,n\),\(a_i \le c_i \le b_ 阅读全文
posted @ 2024-06-19 17:15 V_Melville 阅读(27) 评论(0) 推荐(1)

摘要: AGC020C. Median Sum 记原序列的总和为 \(S\) 容易发现如果把空集也考虑进去的话,在左边任取一个子集,其和为 \(x\),那么一定可以在右边找到一个子集满足它的和为 \(S - x\)。也就是说,位于权值为 \(\frac{S}{2}\) 的左右两边的子集是对称的。 于是,我们 阅读全文
posted @ 2024-06-07 21:43 V_Melville 阅读(38) 评论(0) 推荐(0)

2025年12月11日

摘要: C. Domino 维护当前能推倒的右边界 代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; int main() { int n; cin >> n; 阅读全文
posted @ 2025-12-11 17:29 V_Melville 阅读(0) 评论(0) 推荐(0)

2025年12月3日

摘要: C. Flapping Takahashi 维护当前时刻 \(t\) 可达的高度区间 \([\text{lh}, \text{rh}]\) 。从时刻 \(t_{i-1}\) 到 \(t_i\) 区间扩散为 \([\text{lh}-\Delta t, \text{rh} + \Delta t]\) 阅读全文
posted @ 2025-12-03 23:17 V_Melville 阅读(9) 评论(0) 推荐(0)

2025年11月23日

摘要: 想要抓住幸运,既没有方法,也没有法则,更没有技巧。如果有的话,只有一个。那就是相信自己运气好。 阅读全文
posted @ 2025-11-23 15:59 V_Melville 阅读(23) 评论(0) 推荐(0)

2025年11月16日

摘要: C. Candy Tribulation 不妨先只分配给每个孩子 \(A_i\) 个大糖果,然后通过不断减去 \(Y-X\) 来分配对应的小糖果个数从而得到目标值,那么分配到的大糖果数就是 \(A_i\) 减去小糖果个数即可 不难发现,\(\min(A) \times y\) 就是我们需要的最佳目标 阅读全文
posted @ 2025-11-16 15:12 V_Melville 阅读(148) 评论(1) 推荐(3)

2025年11月9日

摘要: C. Robot Factory 用前 \(k\) 小的头和前 \(k\) 大的身体按递增顺序做匹配 代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; 阅读全文
posted @ 2025-11-09 13:19 V_Melville 阅读(79) 评论(0) 推荐(0)

2025年11月8日

摘要: T1. 数据结构 注意到可以离线,考虑整体二分。每次执行前一半操作,如果发现超过了 \(y\),那么答案就在前一半操作,否则就在后一半操作(如果补一个操作编号为 \(0\),整体加极大值的操作)。 所以只需要维护操作区间 \([l, r]\) 和答案在 \([l, r]\) 内的询问集合即可。使用树 阅读全文
posted @ 2025-11-08 14:36 V_Melville 阅读(7) 评论(0) 推荐(0)

2025年11月4日

摘要: T1. 反转 枚举反转了多少行和列(因为行和行之间本身没有区别,列同理),算一下是否有 \(k\) 个格子被反转。 代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (n); ++i) using namespac 阅读全文
posted @ 2025-11-04 17:08 V_Melville 阅读(9) 评论(0) 推荐(0)
 
摘要: T1. 社团招新 \(20\) 分:\((n \leqslant 10)\) 直接用 dfs 暴力枚举每个人加入分配到哪一个社团中。在 dfs 的过程中维护当前已经得到总评分 \(sum\),以及当前每个社团的人数 \(c_1, c_2, c_3\) 。当找到一种分配方式后,判断 \(\max(c_ 阅读全文
posted @ 2025-11-04 14:38 V_Melville 阅读(19) 评论(0) 推荐(0)

2025年11月2日

摘要: C. Truck Driver 二分或双指针 固定区间左端点 \(l\),找到区间中至少有 \(A\) 个 a 的最小右端点 \(r_a\),以及区间中至少有 \(B\) 个 \(b\) 的最小右端点 \(r_b\)。显然条件二更紧,所以用 \(r_b-r_a\) 来更新答案即可。 注意,\(r_b 阅读全文
posted @ 2025-11-02 16:38 V_Melville 阅读(66) 评论(0) 推荐(0)

2025年10月26日

摘要: C. Odd One Subsequence 开个桶来统计每种数的个数,答案就是 \(\sum \binom{cnt[x]}{2} \times (n-cnt[x])\) 代码实现 #include <bits/stdc++.h> #define rep(i, n) for (int i = 0; 阅读全文
posted @ 2025-10-26 15:49 V_Melville 阅读(56) 评论(0) 推荐(1)