点击打开链接
题意:
集合S支持一下四种操作:
INSERT(S,x) : 如果S中没有x,则插入x
DELETE(S,x): 如果S中有x,则删除x
K-TH(S): 输出S中第K小的数
COUNT(S,x): 统计S中小于x的数有多少个
一共有Q(1 ≤ Q ≤ 200000)次操作。
Treap模板。。
#i...
分类:
其他好文 时间:
2014-05-24 18:03:11
阅读次数:
213
比GSS3 麻烦在于要判断两个区间的相交性。
分为三种情况.
1. x1 y1 x2 y2
这种情况就是 x1 y1 的右最大 + sum【y1 x2】 + x2 y2的做最大
2.x1 x2 y2 y1 其实就是 y1==y2的时候
要么区间在 x2-y2之间
要么区间的头在 x1 x2之间,尾在 x2 y2之间
3. x1 x2 y1 y2。
这种情况...
分类:
其他好文 时间:
2014-05-22 11:48:33
阅读次数:
261
题目大意:
给出N个数
0 操作 把 l ----- r之间的数全部开平方
1 操作 输出 l -----r 之间的和
思路分析:
判断区间里的数字是否全相同。如果相同,
将cov 置为该数
查询的时候和更新的时候,如果碰到cov != -1 的 就直接返回就可以了
#include
#include
#include...
分类:
其他好文 时间:
2014-05-18 05:25:06
阅读次数:
227
1 /*** 2 大意:计算gcd(x,y,z) =1 01 情况
,,还应加上退化到3个平面上的情况。。 23 1、 f(x) = n/x*n/x*n/x;----〉 g(x) = mu[i] *(n/x*n/x*n/x)
24 2、 加上退化到三个平面 ----〉 g(x) ...
分类:
其他好文 时间:
2014-05-14 01:30:06
阅读次数:
352
本题有两个难点:
1 大量的数据输入,没处理好就超时 - 这里使用buffer解决
2 因子分解的算法 a)暴力法超时 b)使用sieve(筛子),不过其中的算法逻辑也挺不容易搞对的。
数值N因子分解逻辑:
1 保存所有可以sqrt(N)范围内的质素
2 找到可以被N除尽的质素d, 然后用d去除N,使用deg变量,保存度,即有多少个d可以被N除尽
3 用d去乘所有已经找到的因子...
分类:
其他好文 时间:
2014-05-14 01:11:37
阅读次数:
302
1 题目大意给出一个n,求sum(gcd(i,j),014 #include 15 using
namespace std;16 #define Max 100000017 18 long long phi[Max+5],ans[Max+5];19 int
prime[Max/3];20 bool....
分类:
其他好文 时间:
2014-05-13 22:40:58
阅读次数:
251
题目链接:点击打开链接
题意比较明显,不赘述。
删除时可以把i-1转到根,把i+1转到根下
则i点就在 根右子树 的左子树,且只有i这一个 点
#include
#include
#include
#include
using namespace std;
#define N 300500
#define inf 10000000
#define L(x) tree[x].ch[0]
#d...
分类:
其他好文 时间:
2014-05-11 21:05:52
阅读次数:
365
题目大意:
求区间最大子区间的和。
思路分析:
记录左最大,右最大,区间最大。
注意Q_L 和 Q_R 就好。
#include
#include
#include
#include
#define lson num<<1,s,mid
#define rson num<<1|1,mid+1,e
#define maxn 55555
using ...
分类:
其他好文 时间:
2014-05-07 12:36:16
阅读次数:
379
插入操作,删除操作和置换操作都是单点的,所以不需要lazy标记。这个很简单,都是两次RotateTo,一次Splay操作就搞定。
求最大连续字段和的操作和线段树的题目类似,只需要保存最左边的连续最大字段和,最右边的连续最大字段和,整个子树的连续最大字段和就OK,整个子树的和就OK。
注意PushUp...
分类:
其他好文 时间:
2014-04-29 21:11:43
阅读次数:
628