Orz黄学长,蒟蒻在黄学长的带领下,通过阅读黄学长的代码!终于会了这道题! 首先我想先说一下这道题的思路(准确来说是黄学长的)。 很明显,树状数组应该不用讲吧!关键是内存怎么开,维护一些什么样的数据? 其实我们通过观察,很快可以发现,你维护被删的数比维护所有的数轻松多了(不管是空间上,还是时间上.....
分类:
编程语言 时间:
2016-01-14 22:16:59
阅读次数:
314
人生第一道树套树。。(虽然暑假就写了= =) 这题是树状数组里面套个可持久化线段树。。。一开始想反了然后发现完全不会写TAT 一般的树状数组操作的时候是直接修改数组里的值的,套上可持久化线段树后就变成在相应的那颗线段树里面修改了。 修改操作就一个一个改,但查询第k大的时候要先把对应的线段树...
分类:
其他好文 时间:
2016-01-13 15:38:53
阅读次数:
200
树套树呀树套树。题意为可以交换两个位置的数,询问每次交换后的逆序对数。直接区间线段树上面套一个值域线段树,然后稍微讨论一下。首先建好树查询一次得到一个ans。(话说我们得到了一个nlog^2的求逆序对的算法)设两个位置为i,j,如果i==j或者是a[i] == b[j]的话就不管。i>j则交换。如果...
分类:
其他好文 时间:
2015-12-28 12:05:17
阅读次数:
210
值域线段树套上一颗区间线段树。查询的时候二分找。最后树套树的空间一定要好好算算。。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 const int N = 50000; 7 int n...
分类:
其他好文 时间:
2015-12-28 11:51:38
阅读次数:
225
题目大意有一个长度为 n 数列,有若干个事件,事件分为操作和询问两种,一次操作是把数列[l...r] 区间中的每个元素x变成 ax + b mod p。一次询问是询问 执行了 第l 次到第r次操作后第 k 个元素的值。解题思路标解是树套树,且平衡树一层需要写可持久化AVL来卡常。松爷在考场上给出了一...
分类:
其他好文 时间:
2015-11-25 21:45:54
阅读次数:
161
题目:要求支持带修改维护区间第k大的值。所谓的动态区间第k大。思路:题解说的是树状数组套treap,然而没想通树状数组怎么维护。。。线段树的话就是把所有的值离散化一下,离线建个关于值的线段树,每个节点是一个treap,treap里的值用位置做关键字,然后做区间查询,复杂度是O(nlogn*logn)...
分类:
其他好文 时间:
2015-11-07 06:09:29
阅读次数:
323
26天以前做过的一道题,之前的做法是分治预处理,树套树在线修改,复杂度为O(nlogn+m*logn*logn),代码量较大。本来想学习一下cdq分治的,看到论文上的凸包、斜率就暂时放一边了,只知道和一般的分治的不同是左子问题可以用来解决右边的子问题。今天下午YY了一个离线的分治做法。对于每一个数字...
分类:
其他好文 时间:
2015-11-03 22:30:33
阅读次数:
256
想了想树套树比较难写,于是块链试一下,2秒左右过了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 typedef long long ll; 9 co...
分类:
其他好文 时间:
2015-10-01 21:39:01
阅读次数:
243
题意:对一个矩阵进行子矩阵操作。元素对多有1e6个,树套树不好开(我不会),把二维坐标化成一维的,一个子矩阵操作分解成多条线段的操作。一次操作的复杂度是RlogC,很容易找到极端的数据(OJ上实测没有),如果判断一下然后建树复杂度是min(RlogC,ClogR)。代码中结点没有保存l和r,而且询问...
分类:
其他好文 时间:
2015-09-08 00:23:41
阅读次数:
168
题意:
给出一颗n个结点的树,点上有权值;
两种操作:
1.修改某个结点的权值;
2.求x,y路径上第K大值;
题解:
首先显然这题可以先树剖一下,将其转化为区间问题;
那么问题来了,用什么维护?
这是有很多办法的,一般人都会上一些比较显然的方法吧;
比如线段树套平衡树,二分答案处理询问;
时间达到了O(mlog^4n)。。。20*20*20*20=160000.。。;...
分类:
Web程序 时间:
2015-08-27 21:20:59
阅读次数:
411