首页 > 代码库 > HDU 3436 Queue-jumpers

HDU 3436 Queue-jumpers

从一开始学离散化就对它没有半毛钱好感,感觉出这种题纯属恶心人。

可以将Top x全部取出来然后离散化,缩点。剩下的就是伸展了,不再赘述。

也有人拿线段树过,一直没有想明白. . .

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <queue>
#include <cmath>
#include <stack>
#include <map>

#pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-8)
#define LL long long
#define ULL unsigned long long
#define _LL __int64
#define _INF 0x3f3f3f3f
#define Mod 9999991

using namespace std;

const int MAXN = 200100;

struct N
{
    //info
    int son[2],pre;

    //data
    int data;
    int sum;
    int ls,rs,s;
}st[200100];

struct O
{
    int ty;
    int x;
}com[101000];

struct NNum
{
    int num,w,site;
}Num[201000],TNum[201000];

int Top_Num;

int Top;

void Updata(int root)
{
    st[root].ls = 0,st[root].rs = 0;
    if(st[root].son[0] != -1)
        st[root].ls = st[st[root].son[0]].s;
    if(st[root].son[1] != -1)
        st[root].rs = st[st[root].son[1]].s;
    st[root].s = st[root].rs + st[root].ls + st[root].sum;
}

void Push_Down(int root)
{
    ;
}


void Init(int &root,int s,int e,int pre)
{
    if(s > e)
        return ;

    int mid = (s+e)>>1;

    root = Top++;
    st[root].data = http://www.mamicode.com/Num[mid].num;>