介绍本题的两种做法: 方法1 前置芝士 1. "线段树" :一个很重要的数据结构. 2. "树状数组" :一个很重要的数据结构. 具体实现 区间修改,单点查询很容易就会想到树状数组了,至于查询前k个数的和又可以丢给权值线段树去干,所以第一种很显然的方法就是树状数组套一个线段树实现. 代码 方法2 前 ...
分类:
其他好文 时间:
2020-02-08 11:56:46
阅读次数:
65
「CQOI2015」任务查询系统 "传送门" 好像也是板子题??? 区间修改,单点查询,考虑差分。 然后每次查询时就直接在对应的主席树上二分即可。 参考代码: ...
分类:
其他好文 时间:
2020-01-24 14:40:06
阅读次数:
96
题意 给定$m$个任务$(l,r,p)$,其中$(l,r)$代表这个任务将于时间$[l,r]$内进行,而$p$代表的是这个任务的优先级 有$n$个询问$(x,k)$,每次询问在时间点$x$进行的所有任务按优先级从小到大排序,前$k$个任务的优先级之和 强制在线 解法 求前$k$个数的和,我们想到主席 ...
分类:
其他好文 时间:
2019-09-06 14:30:33
阅读次数:
86
现在有一群任务,每个任务都有开始和结束的时间和一个优先级,给你所有任务的开始结束时间和优先级,问你在某个时间点优先级最小的k个的优先级的和是多少. 普通的主席树是单点修改 区间查询 这题正好相反 可以用差分数组来做 区间查询改为1-i的前缀和 注意copy结点的方式 不能简单的复制T 还有son t ...
分类:
编程语言 时间:
2019-08-01 11:49:08
阅读次数:
128
按时间继承关系建立主席树(权值线段树) 线段树维护区间和、元素个数 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$大. 然而,这样肯会炸的(都说了是暴力了). 其实,我们可以转化一下区间修改(因为区间修改似乎并不好做哈qwq) 利用前缀和与差分的思想(不会的请自行百度下), 将要修改的区间转化为单点 ...
分类:
其他好文 时间:
2019-06-06 19:22:58
阅读次数:
74
题目链接: "戳我" 主席树维护K大,考虑到利用主席树前缀和的性质。把每个任务拆分成权值为1的进入操作,和权值为 1的退出操作(注意因为是闭区间,所以右边的位置加进去的时候需要+1) (应该是个动态开点的权值线段树一样的东西吧)维护v,表示该节点维护的任务数量是多少。sum表示该节点维护的任务总和是 ...
分类:
其他好文 时间:
2019-01-23 11:39:01
阅读次数:
185
"传送门" 好像还是挺简单的啊,主席树套一套就好了。 本来算错时间复杂度了,以为过不了,去翻题解,发现讲的都是玄学东西,后面终于发现了自己的想法没什么问题,但是还是写不出。 写完后因为5个字节的事情,debug了2小时,真是服了,晚饭也没吃! 时间倒是好解决,差分一下直接查询前缀和就完了,所以首先考 ...
分类:
其他好文 时间:
2019-01-09 22:21:26
阅读次数:
187
传送门 区间修改单点查询的主席树 改个差分就行了 首先强制在线的是查询 所以修改可以一次全读进来然后离散并且插进去 没有影响 这里的话先全修改完再查询 可以放弃树状数组直接维护差分 然后主席树维护区间数字个数和整体和 最后分到叶子节点的时候注意去对应个数个数字加进去就行 然后有个操作就是一次把所有这 ...
分类:
其他好文 时间:
2018-12-11 14:37:43
阅读次数:
194
很好的博客:https://blog.csdn.net/qq_39809664/article/details/79934516 可持久化数组 可持久化线段树 1(主席树) [CQOI2015]任务查询系统 这道题将可以每秒建棵权值线段树,并以1~lim(优先级的最大值)为区间大小记录个数,这样就可 ...
分类:
其他好文 时间:
2018-12-06 23:25:07
阅读次数:
177