04 2021 档案
摘要:题链 Kruskal #include <bits/stdc++.h> using namespace std; #define MS 200009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 0x3f3
阅读全文
摘要:题链 floyd #include <bits/stdc++.h> using namespace std; #define MS 100009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 0x3f3f3
阅读全文
摘要:题链 #include <bits/stdc++.h> using namespace std; #define MS 100009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 2147483647 in
阅读全文
摘要:题链 #include <bits/stdc++.h> using namespace std; #define MS 10009 #define ls rt<<1 #define rs rt<<1|1 #define LL long long #define MAXN 2147483647 int
阅读全文
摘要:答案是对着这段区间 [L,R] 不断询问直到不存在 x+1 得来的; 例如一个区间有为 1,2,4,4; 首先询问 1,发现存在 1,ans = 1; 然后询问 ans+1 = 2,发现存在 2,则 [1,3] 都能凑出,ans = 3; 接着询问 ans+1 = 4,发现存在两个 4,则 [1,1
阅读全文
摘要:题链 分析 前50%的数据 val[i][j][k] 表示 [1,1][i,j] 大于等于 k 的值 的总和; size[i][j][k] 表示 [1,1][i,j] 大于等于 k 的值 的个数; 在 [1,1000] 之内二分查找; 后50%的数据 建立主席树(可持久化权值线段树),节点信息除了左
阅读全文
摘要:本题使用动态开点权值线段树... 数据返回是 [-1e7,1e7] ,所以将其 +(1e7+1) 让范围映射到 [1,2e7+1] ,这样就在 [1,2e7+1] 构建权值线段树,记 2e7+1 为 MAXN; 先考虑前面 4 种操作 插入和删除操作就是在线段树的叶子节点(递归的最底层)的位置 +-
阅读全文
摘要:普通线段树是预先处理出值域的范围。像二叉树一样建树,有时通过将所给序列离线离散化以减小普通线段树的值域。 当所给序列不允许离线而且值域比较大时,动态开点线段树可以 O(nlogm) 维护线段树,m 是值域,假象一开始有一颗 [1,m] 的线段树,当然是不去建它的。 对于普通线段树都有修改操作,则如将
阅读全文