XCPC wiki - 质数与约数
![[…/data/img/e5e92bc7d32828b005d6b7f73694da57_720.jpg]] 素数筛 (欧拉筛) 1234567891011121314vector<int> prime;int mint[N]; // 最小素因子 void init() { for (int i = 2; i < N; i++) { if (!mint[i]) mint[i] = i, prime.push_back(i); for (auto& p : prime) { if (1ll * i * p >= N) break; mint[i * p] = p; if (p == mint[i]) break; } } mint[1] = 1;} 时间复杂度 Θ(n)\Theta(n)Θ(n) VJwin6D - 又见 GCD 题意 已知...
XCPC wiki - 交互
博弈 CF1991E. Coloring Game (1900) 有一个由 nnn 个顶点和 mmm 条边组成的无向图。每个顶点可以用三种颜色之一着色。初始时,所有顶点都未着色。 Alice 和 Bob 正在玩一个包含 nnn 轮的游戏。在每一轮中,都会发生以下两个步骤: Alice 选择两种不同的颜色。 Bob 选择一个未着色的结点,并用 Alice 选择的两种颜色之一为其着色。 如果存在连接两个相同颜色结点的边,则 Alice 获胜。否则 Bob 获胜。给你这个图。决定想扮演哪位玩家并赢得游戏,然后与交互库玩这个游戏。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475void eachT() { int n, m; cin >> n >> m; ...
XCPC wiki - 并查集 Disjoint Set Union (Uno-Find Set)
DSU01 - Find by Optimized Path Compression 路径压缩优化 12345678910111213141516171819202122232425262728struct DSU { vector<int> p, siz; DSU(int n) : p(n + 1), siz(n + 1, 1) { iota(p.begin(), p.end(), 0); } int find(int x) { while (x != p[x]) x = p[x] = p[p[x]]; // 路径压缩 return x; } bool same(int x, int y) { return find(x) == find(y); } bool uno(int x, int y) { x = find(x), y =...
XCPC wiki - 区间信息
ST Table ST 表 (Sparse Table, 稀疏表) 基于 倍增 思想,用于解决 可重复贡献问题 †^\dagger†,支持在 Θ(1)\Theta(1)Θ(1) 的时间内 区间查询,不支持在线修改。 递推计算所有长度为 222 的幂的区间的结果。对于询问 [l,r)[\mathscr{l}, r)[l,r),记 k=⌊log2(r−l)⌋k = \lfloor \log_2(r - \mathscr{l}) \rfloork=⌊log2(r−l)⌋,结果为 [l,l+2k)[\mathscr{l}, \mathscr{l} + 2^k)[l,l+2k) 和 [r−2k,r)[r - 2^k, r)[r−2k,r) 的结果的并。 †:^\dagger:†: 区间询问对应的运算符 ∗*∗ 满足 x∗x=xx*x=xx∗x=x 和结合律 (x∗y)∗z=x∗(y∗z)(x*y)*z=x*(y*z)(x∗y)∗z=x∗(y∗z) ,如 max, min, ∣ , &, gcd\max,\ \min,\ |\ ,\ \&,\...
XCPC wiki - 构造
2024 东北四省 K / CC 网络赛模拟 C. Tasks Link [[…/contests/2024-09-07-2024 CCPC 网络赛热身赛 |2024-09-07-2024 CCPC 网络赛热身赛]] 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253int n;cin >> n;using node = struct { int l, r, b, id; };vector<node> a(n);for (int i = 0; i < n; ++i) { cin >> a[i].l >> a[i].b; a[i].id = i;}sort(a.begin(), a.end(), [&](node a, node b) { return a.l == b.l ? a.b < b.b : a.l <...
Codeforces Round 1000 (Div. 2) A - E
2063A - Minimal Coprime 称一个区间 [ℓ,r][\ell,r][ℓ,r] 为 minimal coprime,如果它不存在左右端点互素的真子区间, 如果原区间长度 ⩾3\geqslant 3⩾3,考虑真子区间 [ℓ,ℓ+1][\ell,\ell+1][ℓ,ℓ+1],它左右端点互素,因此不是 minimal coprime; 如果原区间长度 =2=2=2,且 ℓ>1\ell>1ℓ>1,则 ℓ+1=r\ell+1=rℓ+1=r,它自己是互素的,其全部真子区间为 [ℓ,ℓ],[r,r][\ell,\ell],[r,r][ℓ,ℓ],[r,r],都是左右端点不互素的,是 minimal coprime。 如果原区间长度 =1=1=1,且 ℓ≠1\ell \neq 1ℓ=1,它自己左右端点不互素,不是 minimal coprime; 特别地,[1,1][1,1][1,1] 是 minimal coprime,[1,2][1,2][1,2] 不是 minimal coprime。 综上...
〔主机註記〕第 50 周主机註記 (Janu.20 - Janu.26)
第 50 周主机註記 月曜日 (Janu.20) 火曜日 (Janu.21) 水曜日 (Janu.22) 木曜日 (Janu.23) 錘子 「這題能線段樹嗎?」 「蘑菇說了不要問能做什麽,先說你想要什麽。」 …… 「我會笛卡爾樹。」 「你會個錘子?」 金曜日 (Janu.24) 寫一 我可以寫一千字我好想你。 這才兩天,我的戒斷反應就如此嚴重…… 不敢參加最後一次區域賽…… 界限 0:00 直到睡覺這段時間寫的文字,應歸在前一天還是當天,這我一直沒有統一。 對於我來說,一天的界限並不是 0:00 - 24:00,而是從起床到睡覺,我想對絕大多數人來說也是如此。 活動有連續性,生活有慣性。如果一份工作從晚上持續到第二天淩晨,我會認爲 0:00 後的時間仍是前一天活動的一部分,將這段時間視爲一個整體。就比如說,現在是 Janu.25 的 2:46,我仍在寫金曜日的主机註記,記錄這一天的所思所想。 倒不如說,人的心理狀態和情緒往往具有延續性。前一天晚上的某種情緒狀態,會延續到淩晨 0:00...
IAEPC Preliminary Contest (Codeforces Round 999, Div. 1 + Div. 2) A-F1
2061A - Kevin and Arithmetic 第一个偶数,后面都是奇数。 123456789101112131415161718192021222324252627282930#include <bits/stdc++.h>using ll = long long;using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int t; cin >> t; while (t--) { int n; cin >> n; int cnt = 0; bool flag = 0; for (int i = 0; i < n; i++) { int x; cin >> x; ...
Codeforces Round 998 (Div. 3) A - G
2060A - Fibonacciness 暴力枚举所有的 a3a_{3}a3。 12345678910111213141516171819202122232425#include <bits/stdc++.h>using ll = long long;using namespace std;int main() { int t; cin >> t; while (t--) { int a1, a2, a4, a5; cin >> a1 >> a2 >> a4 >> a5; int res = 0; for (int a3 = -100; a3 <= 100; a3++) { int cnt = 0; cnt += a1 + a2 == a3; cnt += a2 + a3 == a4; cnt += a3...
Codeforces Round 997 (Div. 2) A - E
2056A - Shape Perimeter 12345678910111213141516171819202122232425#include <bits/stdc++.h>using ll = long long;using namespace std;int main() { ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int t; cin >> t; while (t--) { int n, m; cin >> n >> m; int res = 4 * m * n; for (int i = 0, a, b; i < n; i++) { cin >> a >> b; if (i) res -= m - a + m - b << 1;...


