bzoj1588[HNOI2002]营业额统计

好裸的题,好坑的数据= =详见讨论版

#include 
#include 
#include 
#include 
using namespace std;
#define MAXN 500010
#define INF 0x7fffffff
struct node{
    int ch[2],f,v;
}tr[MAXN];
int a,tmp,x1,x2,ans;
int n,root,tot;
void SC(int x,int y,int z)
{
    tr[x].ch[z]=y;
    tr[y].f=x;
}
inline bool d(int x) {return tr[tr[x].f].ch[1]==x;}
void rot(int x)
{
    int y=tr[x].f,z=tr[y].f,tt=d(x);
    SC(z,x,d(y));SC(y,tr[x].ch[!tt],tt);SC(x,y,!tt);
    //updata(y);
}
void splay(int x,int f)
{
    //PD(x);
    while (tr[x].f!=f)
    {
        if (tr[tr[x].f].f==f) {rot(x);break;}
        if (d(x)==d(tr[x].f)) {rot(tr[x].f);rot(x);} else {rot(x);rot(x);}
    }
    //updata(x);
}
void Insert(int y)
{
    if (!root)
    {
        root=++tot;
        tr[tot].v=y;tr[tot].f=0;
        return ;
    }
    int x=root,z;
    while (x)
    {
        z=x;
        if (y


你可能感兴趣的:(bzoj,数据结构,splay)