摘要: 题意: 求某段区间内不同元素之和。解法: 离线处理,将待询问区间按照右端点排序,然后依次将元素插入到线段树中,为了保证求得的结果都是不同元素之和,我们需要保证同一时刻某个元素在线段树中只能出现一次,如果之前插入了,那就先删除再在新位置插入。 p.s.这题函数式线段树应该可以在线做,但是暂时没想到>_< 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef lon 阅读全文
posted @ 2013-06-03 21:44 silver__bullet 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题意:无修改的区间第k小问题。p.s.终于能用三种方法搞定这道题了,开心~ 划分树的方法喜闻乐见; 线段树套平衡树然后二分枚举答案,写起来比较麻烦; 今天刚刚想明白函数式线段树>_<,发现写这个还挺方便; 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N = (int)3e6+10; 6 const int maxn = (int)1e5; 7 int lson[N],rson[N],sum[N]; 8 阅读全文
posted @ 2013-06-03 14:36 silver__bullet 阅读(216) 评论(0) 推荐(0) 编辑