05 2019 档案
摘要:CF484E. Sign on Fence "CF484E. Sign on Fence" 题目大意 给你n块木板,每块木板有高度Hi,q次询问每次询问在[l,r]区间中最大的长度为w的区间的最小值。 思路 将木板从大到小排序,建动态开点线段树维护区间最长子段,于是就可以二分高度,判断这个高度在[l
阅读全文
摘要:bzoj2006: [NOI2010]超级钢琴 "bzoj2006: 超级钢琴" 思路 对所有前缀和建权值线段树,先将所有右端点对应的最大的左端点丢进优先队列里,每次将优先队列队首的区间取出来后,将rk[r]++,从这个右端点对应的主席树区间中找到排名第rk[r]的值丢进优先队列,相当于用主席树求区
阅读全文
摘要:bzoj3956: Count(主席树+单调栈) "bzoj3956: Count" 思路 对友好点对建边的话,可以看出最多只有2n条边,先用单调栈使所有左端点记录右端点,然后对左端点前缀建权值主席树,查询的时候只要判断T[r] T[l 1] 这颗主席树中有多少点在[l,r]这段区间就行了。 代码
阅读全文
摘要:CF787E. Till I Collapse(主席树) "E. Till I Collapse" 题目大意 给你n个数让你划分区间,每个区间最多有k种不同的数,求划分的最少区间,输出k从1到n的答案。 思路 倒序建主席树,记录这个数上一次出现是什么时候,以坐标为主席树的根节点,建坐标线段树,对于每
阅读全文
摘要:bzoj3932: [CQOI2015]任务查询系统(主席树) "[CQOI2015]任务查询系统" 思路 按时间顺序建权值线段树,对于每个三元组,在Si的树上Pi的位置+1,Ei+1的树上Pi的位置 1,这样对于每次询问的时间区间T[r] T[l 1]求前k个的和就行了,需要注意的是询问的时候当l
阅读全文