
树套树
Zhayan9QvQ
嘿嘿嘿
展开
-
【Bzoj4448】情报传递
题意给一棵树和m个操作(持续m秒),操作如下 1.给一个点打上标记,被标记的点每秒加1危险度,(被标记时仍为0,后一秒为1)。 2.查询x,y的路径上有多少危险度大于k的点。解析这种每秒增加的标记显然是不好维护的。 考虑转化。 设某点在t时刻被标记,i时刻提出询问,那么此时它的危险度为i-t。 则有i-t>k,t#include <cstdio> #include <algorithm>#原创 2017-06-20 20:40:08 · 731 阅读 · 0 评论 -
【Bzoj2141】排队
题意给一个序列,每次可以交换其中的两个数,每次交换后输出逆序对的数量。解析每次交换考虑x,y之间的数字(x之前,y之后的数字是没有影响的) 那么增加的数字是小于a[y],大于a[x]的那些。 减小的是小于a[x],大于a[y]的。 区间查rank显然可以树套树解决。 然后注意一些特判。#include <cstdio> #include <algorithm>#define Rep( i ,原创 2017-06-15 17:54:52 · 641 阅读 · 0 评论 -
【Bzoj3196】2B平衡树
题意您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为大于x,且最小的数)解析唔…看到这个标题 啊啊啊是你吗2B小姐姐!! 好了不发神经这是个灰常普通的树套树模板,一般会用线段树套原创 2017-06-14 21:41:52 · 810 阅读 · 0 评论 -
【Bzoj1901】Dynamic Ranking
题意给一个序列,每次询问[l,r]区间内第k小的数字。带修改。解析同2B平衡树的操作。 操作少可以打得简单一点。#include <cstdio> #include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin),i##_END=(_end);i<=(i##_END);i++) #define For( i , _beg原创 2017-06-15 18:00:02 · 636 阅读 · 0 评论