引入 首先请求出: ? 长度为n的序列 ? m次询问全局第k小 做法: ? 画一棵(权值)线段树手动模拟,请记住此过程 之后,请思考; ? 长度为n的序列 ? m次询问区间[l, r]中第k小值 ? 值域 ±1e9 ? n≤2e5 , m≤2e5 做法: 可持久化线段树 原理 用 [1, r]建得的 ...
分类:
其他好文 时间:
2019-07-27 09:54:38
阅读次数:
101
[TOC] A 模拟出A不是最大值的情况,存起来。 最多有n个。当A为最大值的时候,后面n 1个数开始循环。 查询分两种情况讨论就行了 C 转化一下,首先我们先排序a,没有影响。c为i选的菜的价格 那考虑一下b,ic[j]就不管咯,最后b也是有序的了。 判断时候排序a,b,一对对的比较,第一个买不起 ...
分类:
其他好文 时间:
2019-07-24 22:40:14
阅读次数:
143
题目描述 You are given two permutations aa and bb , both consisting of nn elements. Permutation of nn elements is such a integer sequence that each value ...
分类:
编程语言 时间:
2019-07-18 13:55:30
阅读次数:
115
提取:等式转换,桶,倍增lca 对于(x,y)的一次提问,我们规定lca为(x,y)的lca d为深度,w为点出现观察员的时间 那么对于(x,lca)这段路径上的点i,此次提问能作出贡献的等式是 d[x]-d[i]=w[i] ->d[x]=w[i]+d[i] 对于(lca,y)这段路径上的点i,此次 ...
分类:
编程语言 时间:
2019-07-12 14:15:29
阅读次数:
142
权值线段树合并 线段树维护1~1e5这个值域,对于每个点开一颗线段树,储存值域内最大的因数。 然后对整个树dfs,合并父亲和儿子节点的线段树,在合并过程中更新答案。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof ...
分类:
其他好文 时间:
2019-07-11 15:42:34
阅读次数:
113
题目描述: bz luogu 题解: 贪心+权值线段树。 $K=1$的时候,答案为$\sum |x-l| + |x-r|$,所以所有端点排序后取中位数即可。 $K=2$的时候,一定是左边的一些走左边的桥,右边的一些走右边的桥。 问题是按什么顺序排序。 答案是按线段中点排序。 原因是,对于河两岸的一对 ...
线段树咕咕咕 我来写一个好写的权值线段树的解析吧 权值线段树是什么 线段树每个点维护的是点的值,而权值线段树叶子点维护的是一个数出现的次数,父节点维护的是它代表的区间里的数出现的次数的和 权值线段树基本操作 其实权值线段树的基本操作与线段树没有太大的不同 建树 注意:由于一个叶子节点代表一个数出现的 ...
分类:
其他好文 时间:
2019-06-16 12:01:50
阅读次数:
113
按时间继承关系建立主席树(权值线段树) 线段树维护区间和、元素个数 cpp include include define int long long using namespace std; const int N=1e5+5; const int SZ=5e6+6; int m,n; int to ...
分类:
其他好文 时间:
2019-06-09 13:16:42
阅读次数:
146
新科技:整体二分 它能解决的典型问题:带修改区间第$k$大 大概的做法是这样的:我们一次二分一个值$mid$,然后依据操作的答案与$mid$的大小关系把操作分别划到两边,然后递归下去。也就是相当于二分的是所有询问的答案 感觉其实这个跟在权值线段树上二分一个效果,只是用离线的方式替代掉了那一层权值线段 ...
分类:
其他好文 时间:
2019-05-24 00:32:37
阅读次数:
147