题意: 给一长度为n的序列,维护三个操作:区间开根,区间加,区间求和。 解法: 注意到本题关键在于区间开根: 对于一个数字,只要进行$O(loglogT)$次开根即会变为1。 考虑线段树,对于线段数上的点维护$maxv$,$minv$。 对于$[\sqrt{maxv}] = [\sqrt{minv} ...
分类:
其他好文 时间:
2017-03-17 19:36:11
阅读次数:
196
题意:给定一个颜色序列,维护:1、单点修改 2、区间查询不同颜色的种数 题解: 定义f[i]为i左边第一个和i颜色相同的位置,用分块来维护f。 询问:看区间中有多少个位置的f[i]<l 更新:暴力枚举p左右最近的与p颜色相同的位置,更新即可 #include <cmath> #include <cs ...
分类:
其他好文 时间:
2017-02-27 01:11:46
阅读次数:
234
题意:给定一个由(,)组成的括号序列,维护:1、将[a,b]修改为同一种半括号 2、将[a,b]翻转 3、将[a,b]的(变为),)变为( 4、求[a,b]最少要添加多少个括号才能合法 题解: 不算太裸的平衡树……论标记的正确打法。 对于一个括号序列,我们总能简化成一个左边全是右括号,右边全是左括号 ...
分类:
其他好文 时间:
2017-02-26 13:48:06
阅读次数:
240
http://uoj.ac/problem/228 (题目链接) 题意 给出一个序列,维护区间加法,区间开根,区间求和 Solution 线段树。考虑区间开根怎么做。当区间的最大值与最小值相等时,我们直接对整个区间开根。最坏情况下,一次开根的复杂度最坏是${O(nlogn)}$的,然而每次开根可以迅 ...
分类:
其他好文 时间:
2017-01-29 10:57:50
阅读次数:
260
题目描述 Description 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了。 小沐沐说,对于两个串A,B,如果它们都包含一段位置不一定连续的数字,且数字是严格递增的,那么称这一段数字是两个串 ...
分类:
其他好文 时间:
2016-11-16 22:06:15
阅读次数:
208
题目链接:借教室 题意:给出n天得教室数目,m个借教室得单子,按顺序借教室,问哪个单子不满足并输出 分析:可以用线段树做,会T,常数比较大,选择用差分序列维护前缀和,二分答案即可 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> ...
分类:
其他好文 时间:
2016-10-22 21:19:56
阅读次数:
393
//U A B 将第A位置的元素改为B
//Q A B询问[A , B]区间的最长的递增序列
//维护ma_l , ma , ma_r 左边最长,区间最长,右边最长
#include
#include
#include
using namespace std ;
const int maxn = 1e5 + 10 ;
#define left v...
分类:
其他好文 时间:
2015-07-26 21:02:16
阅读次数:
107
这个题意是给你n个数,然后寻找一个区间,区间的最大值与最小值的差要小于k并且大于m
思路:
用两个单调序列维护这个序列,显而易见用当前者两个单调序列的列首相减如果大于k的话那么,我们就要寻找列首在序列位置比较小的那个往后面加1。这个题目的难点在于题目意思是区间,我理解错了。以为是那种最长公共子序列那种。
#include
#include
#include
using namespac...
分类:
其他好文 时间:
2015-07-17 18:54:39
阅读次数:
128
Splay Splay序列维护的模板题了……为了便于处理边界情况,我们可以先插入两个空格当作最左端和最右端,然后……其实本题主要考察的就是Build、splay和Findkth这三个操作,我们可以实现一个splay(x,s)操作,使x结点旋转到s结点的下方(如果s为0则x旋转到根),这样可以方便地....
分类:
其他好文 时间:
2015-04-10 13:25:21
阅读次数:
242
Splay 还是splay序列维护,这题我WA了的原因是:在Push_up的时候,当前子树的max我是直接取的L、R和v[x]的最大值,但是如果没有左/右儿子,默认是会访问0号结点的mx值,而这个值没有初始化成-INF,所以就会导致所有负max值全部变为0…… 1 /**************.....
分类:
其他好文 时间:
2015-04-10 13:19:38
阅读次数:
140