摘要:
F. Zero Remainder Sum || dp #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int maxn = 73; int a[maxn][maxn], dp[ 阅读全文
摘要:
单调队列 https://ac.nowcoder.com/acm/problem/50528 #include <cstdio> using namespace std; const int maxn= 1e6 + 4; int a[maxn], dq[maxn]; int main() { int 阅读全文
摘要:
dfs序表示每个节点在dfs时进出栈的时间序列。 dfs序可以把一棵树区间化,可求出每个节点管辖的区间。 同一颗子树所对应的一定是dfs序中连续的一段。 int L[maxn], R[maxn], dep[maxn], cur; vector<int> G[maxn]; void dfs(int x 阅读全文
摘要:
板子 int a[maxn], b[maxn];//a[i]为原数组,b[i]为离散化后的数组 int main() { int n; scanf("%d", &n); for(int i = 1; i <= n; ++i) { scanf("%d", &a[i]); b[i] = a[i]; } 阅读全文
摘要:
D - Mayor's posters || 覆盖型线段树 & 离散化 https://vjudge.net/contest/399540#problem/D 对于每个结点,若tree == 0,表示这段区间内颜色不唯一;若tree != 0,这个数字就表示这段区间对应的颜色; 贴n张海报,即n次区 阅读全文
摘要:
线段树:区间修改,区间查询,区间可分可合性 区间可分:整个区间的信息用于更新子区间的信息(push_down) 区间可合:两个子区间的信息可以用于更新整个区间的信息(push_up) 只有区间修改时才需要用lazy tag //node为树上的节点编号,l,r为arr数组下标,表示当前节点node的 阅读全文
摘要:
食物链 || 带权并查集 0:同类 1:吃 2:被吃 w[x]表示x和它爸爸的关系 #include <cstdio> using namespace std; const int maxn=5e4+3; int f[maxn], w[maxn]; void init(int n) { for(in 阅读全文
摘要:
带权并查集 带权并查集即是结点存有权值信息的并查集;当两个元素之间的关系可以量化,并且关系可以合并时,可以使用带权并查集来维护元素之间的关系;带权并查集每个元素的权通常描述其与并查集中祖先的关系,这种关系如何合并,路径压缩时就如何压缩;带权并查集可以推算集合内点的关系,而一般并查集只能判断属于某个集 阅读全文
摘要:
求n以内素数个数 复杂度:O(nloglogn) 代码: int prime[maxn]; //第i个素数 bool is_prime[maxn+1];//是否是素数 //返回n以内素数个数 int sieve(int n) { int cnt = 0; for(int i = 0; i <= n; 阅读全文
摘要:
操作: 1. 查询a与b是否属于同一集合 2. 合并a与b所在的集合 复杂度: 均摊复杂度优于O(log(n)) 代码:(改了码风有点不习惯qaq int f[maxn],h[maxn];//每个结点的父亲及树高 //初始化n个元素 void init(int n) { for(int i = 1; 阅读全文