摘要: 新模板,使用了模板和默认值、幺元等,分离node中的数据维护部分。当维护的数据与l,r有关时,节点内需要存l,r,可能导致空间开销比较大。当query的merge的成本太高时,不能用下面这个模板,必须用旧模板。旧模板中query的流程和每个节点中的数据相关,也就是说query是可以理解sum[u]和 阅读全文
posted @ 2020-11-26 22:22 purinliang 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 并查集 对并查集及其常见的扩展的介绍,以及模板的梳理,部分模板可能没有经过实际验证?要多想一想是不是正确的。 TODO:搭建配套的测试代码和用例,用一个已知正确的暴力代码/验证过的并查集代码对拍出正确的答案,然后保存到git中用脚本进行自动化测试。 Completed in November 202 阅读全文
posted @ 2020-11-26 21:17 purinliang 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 维护翻转操作 struct Treap { private: static const int MAXN = 200000 + 10; int ls[MAXN], rs[MAXN]; int rnd[MAXN], siz[MAXN]; int del[MAXN], dnt; int cnt, roo 阅读全文
posted @ 2020-11-26 20:15 purinliang 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 突发奇想可以用拓扑排序的写法,从叶子开始删,然后deg为0的是父亲,deg不为0的是后继节点,最后会剩下一个环deg都是2。 for(int i = 1; i <= n; ++i) { G[i].clear(); deg[i] = 0; cnt[i] = 0; } for(int i = 1; i 阅读全文
posted @ 2020-11-25 04:58 purinliang 阅读(70) 评论(0) 推荐(0) 编辑
摘要: https://codeforces.ml/contest/888/problem/G struct TrieNode { int cnt; int num; int nxt[2]; void Init() { cnt = 0; num = 0; memset(nxt, 0, sizeof(nxt) 阅读全文
posted @ 2020-11-20 18:20 purinliang 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 并查集找格子图的连通分量 int n, m; char g[1005][1005]; int fa[1000005]; int cnt[1000005]; int id[1005][1005]; int x[1000005]; int y[1000005]; int find(int x) { re 阅读全文
posted @ 2020-11-19 17:36 purinliang 阅读(93) 评论(0) 推荐(0) 编辑
摘要: //#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune 阅读全文
posted @ 2020-11-18 11:24 purinliang 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 要么使用atan2的long double类型,要么使用整数。 无误差版本的极角排序。 int n; struct Vector { ll x; ll y; int id; Vector() {} Vector(ll _x, ll _y) { x = _x, y = _y; } bool top() 阅读全文
posted @ 2020-11-17 11:00 purinliang 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 模版 namespace Combinatory { #define COMBINATORY_AUTO_INIT // MOD must be a prime and bigger than MAXN static const int MOD = 1e9 + 7; static const int 阅读全文
posted @ 2020-11-15 13:40 purinliang 阅读(273) 评论(0) 推荐(0) 编辑
摘要: \(i\) 的最小质因数 \(pm[i]\) 。 \(i\) 的最大的最小质因数的幂 \(pk[i]\) 。 判断 \(i\) 是不是质数的充要条件为 \(i>1 \; and \; pm[i]=i\) const int MAXN = 1e6 + 10; int p[MAXN], ptop; in 阅读全文
posted @ 2020-11-10 17:39 purinliang 阅读(113) 评论(0) 推荐(0) 编辑