摘要: 题目链接 主席树。 把区间的影响挂在左端点与右端点,建树时顺便对应的插入与删除。 维护一段值域区间的和与数字个数,查询时要注意与第k大的数相同的数可能有很多。 复杂度O(nlogn) 阅读全文
posted @ 2017-11-09 21:48 BLMontgomery 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 题目链接 比较简单的一道平衡树题。 第三个操作可以直接用map完成(加进去一个数只会让答案变小,于是与它的前面后面一个数做差更新答案即可),只考虑前两个操作。 ·维护区间内的最大最小值,以及区间相邻两数最小差值。 ·对于insert x k ,相当于在x+1前插入k,再用一个树状数组维护原数组中的每 阅读全文
posted @ 2017-11-09 21:35 BLMontgomery 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题目链接 题目给了你一个奇怪的图,让你求它的生成树个数。 开始写了一个矩阵树: 发现答案会超过long long的范围,而用高精好像会T,于是花了几十分钟去推这个基尔霍夫矩阵行列式的递推式。 首先,我们把这个图的基尔霍夫矩阵最后一行最后一列消去,得到这样的矩阵A |3 -1 0 ... ... 0 阅读全文
posted @ 2017-10-12 19:14 BLMontgomery 阅读(411) 评论(1) 推荐(0) 编辑
摘要: 原题链接 我的方法是用另外一颗splay(以原来输入的关键码作为关键字)维护原树节点深度信息,使得在操作时能在原树上快速定位与查询。 为了方便,以下提到的splay都是维护信息的那颗splay,而不是用来模拟原来操作的那棵树。 对于插入,直接在splay中insert,再看它的前驱与后继谁的左/右儿 阅读全文
posted @ 2017-10-11 11:00 BLMontgomery 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 原题链接 发现进位或退位时,会有连续的一段1变成0或连续的0变成1,然后在后面产生一个进位或退位。于是我们只需要一颗线段树支持区间赋值,查询左边第一个1/0,以及单点查询值。可以把a按二进制拆开去修改,复杂度是O(nlognloga)的,这样好像过不去。 于是我的做法是在线段树的每个叶子节点存30位 阅读全文
posted @ 2017-10-10 20:46 BLMontgomery 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 原题链接 发现 k<=50 ,在插入和删除时最多会影响不超过 k2 个串,用链表实现插入和删除,然后只需用哈希表维护每个长度不超过k的串的出现次数,哈希的话可以先用比较大的范围的值处理冲突,再映射到1e8的桶里统计。 考虑复杂度。 首先在删除时由于保证了 c<=1000 所以这部分复杂度是O(ck2 阅读全文
posted @ 2017-10-10 20:25 BLMontgomery 阅读(388) 评论(0) 推荐(0) 编辑