zoj3765】的更多相关文章

非常裸的一棵Splay树,需要询问的是区间gcd,但是区间上每个数分成了两种状态,做的时候分别存在val[2]的数组里就好.区间gcd的时候基本上不支持区间的操作了吧..不然你一个区间里加一个数gcd都不知道怎么维护了,所以维护点的gcd是比较简单的,题目存在删除和增加,所以Splay树无误了.删除一个结点或区间的方法是先把它get出来,然后令root->ch[1]->ch[0]=null,记得每次操作完要提根. #pragma warning(disable:4996) #include&l…
题解: splay维护 注意是gcd 代码: #include<bits/stdc++.h> using namespace std; #define Key_value ch[ch[root][1]][0] ; ]; ],key[N],size[N],root,tot1,L,R,pos,_st,val; int sum0[N],sum1[N],st[N],s[N],tot2,a[N],status[N],n,q; int gcd(int a,int b) { if (!b)return a;…