随笔分类 - 主席树
摘要:先将权值离散。 显然可以对于每个结点建一棵权值线段树存这个点到根结点的路径上的点权,询问时在线段树上二分,但这样时间是O(n2log2n)的。 然后想到用主席树优化,时间复杂度O(n*log2n)。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #inc
阅读全文
摘要:先求出dfs序,然后枚举管理者。 由于只要求数量最多,所以薪水一定从小到大取,用主席树维护,每次在主席树上二分就可以了。 具体看代码。 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorit
阅读全文
摘要:对于每一个询问二分答案。 设当前答案为x,将>=x的数的权值设为1,<x的数的权值设为-1。 当 [b+1,c-1]的权值和+[a,b]权值和最大的后缀+[c,d]权值和最大的前缀>=0时x可行。 先对每个数离散,然后以每个值建立主席树记录区间和、最大前缀、最大后缀就可以了。 时间复杂度:O(n*l
阅读全文
摘要:先考虑没有深度限制的情况。 先将每个节点的权值设为1,对于颜色相同且在dfs序中最近的2个点,用倍增求出lca并将它的权值减一。然后子树中不同的颜色种数就是子树的权值和了。 有深度限制时,考虑以深度为时间建立主席树。 将每个点按深度排序,枚举一遍。对每种颜色开一个set,枚举到一个点时将它在dfs序
阅读全文
摘要:题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现。 思路:把所有连续的k个数字hash一下,然后扔进主席树,询问时在主席树中查询就可以了。 注意(坑)点:1、
阅读全文
摘要:树状数组套主席树模板题。。。 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对
阅读全文
摘要:题目大意: 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分。超级计算机中的 任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei秒后结束(第Si秒和Ei秒任务也在运行 ),其优先级为Pi。同一时间可能有多个任务同时执行,它们
阅读全文

浙公网安备 33010602011771号