摘要:
周报 这周学习了cdq分治,主席树,动态开点线段树,线段树合并等,主要重心放在了数据结构上,另外也学习了一些一些‘黑科技’,比如 Meissel_Lehmer,能够在 \(O(n^{\frac 23})\) 内计算出 \(1\sim n\) 的素数个数,又比如 Miller–Rabin 可以在近似 阅读全文
摘要:
河南萌新联赛2024第(四)场:河南理工大学 A-该出奇兵了_河南萌新联赛2024第(四)场:河南理工大学 (nowcoder.com) 思路 一次奇袭相当于割掉了一个点,而每割掉一个点可能会产生一个或多个连通分量,所以我们需要计算删掉一个节点后其新产生的联通分量的贡献。 以割点为分界点,分为两棵子 阅读全文
摘要:
复杂度 \(O(n^\frac 23)\),计算 \(1\sim n\) 的素数个数 #define div(a, b) (1.0 * (a) / (b)) #define half(x) (((x) - 1) / 2) i64 Meissel_Lehmer(i64 n) { if (n <= 3) 阅读全文
摘要:
using i128 = __int128; istream &operator>>(istream &is, i128 &x) { string s; is >> s; bool neg = false; x = 0; for (char c : s) { if (c == '-') neg = 阅读全文
摘要:
template<class Node> struct PersidentSegmentTree { #define lc(u) tr[u].l #define rc(u) tr[u].r const int n; int tot = 0; vector<Node> tr; vector<int> 阅读全文
摘要:
【线段树合并/树上差分】P4556 [Vani有约会] 雨天的尾巴 /【模板】线段树合并 思路 对 \(x,y,lca(u,v),fa_{lca(u,v)}\) 四个点进行树上差分,然后用线段树合并动态权值线段树。 #include <bits/stdc++.h> using namespace s 阅读全文
摘要:
jiangly的(偷一下 i64 mul(i64 a, i64 b, i64 m) { return static_cast<__int128>(a) * b % m; } i64 power(i64 a, i64 b, i64 m) { i64 res = 1 % m; for (; b; b > 阅读全文
摘要:
P3919 【模板】可持久化线段树 1(可持久化数组) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc++.h> using namespace std; using i64 = long long; template<class Node> 阅读全文
摘要:
template<class Node> struct PersidentSegmentTree { #define lc(u) tr[u].l #define rc(u) tr[u].r #define val(u) tr[u].v const int n; int tot = 0; vector 阅读全文
摘要:
P3834 【模板】可持久化线段树 2 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc++.h> using namespace std; using i64 = long long; template<class Node> struct 阅读全文