HNOI 2002 營業額統計

2021-07-04 16:59:32 字數 1051 閱讀 2365

最近開始重新學習splay樹寫的第一題,基本就是照著別人部落格改的一道題,關於splay樹的模板,感覺大牛已經把**改得很短!!!這道題沒什麼難度,乙個插入操作,乙個找前驅,乙個找後驅的操作。(話說這題有個資料有個bug的地方,可以看連線的discuss)。因為沒有push_down,push_up的操作,感覺這題應該算是splay樹裡面最水的一道了吧。

下面附上**:(因為是第一題寫splay樹,照著別人模板寫的,然後寫後面題的時候逐漸完善了一下)

#include #include #include #include #include #define ll long long

#define maxn 110000

using namespace std;

struct splaytree

void newnode(int& rt,int father,int value)

void rotate(int x,int kind)

pre[x] = pre[y];

nt[x][kind] = y;

pre[y] = x;

}void splay(int x,int goal)

else

else}}

if (!goal)

root = x;

}bool insert(int k)

rt = nt[rt][val[rt] < k];

}newnode(nt[rt][val[rt] < k],rt,k);

splay(nt[rt][val[rt] < k],0);

return true;

}int get_pre()

return val[x];

}return -1;

}int get_next()

return val[x];

}return -1;

}};splaytree tree;

int main()}}

printf("%d\n",ans);

}return 0;

}

HNOI2002 營業額統計

花了一天鑽研了splay,然後發現splay沒我想象的那麼難 以前都是寫sbt來著 但是splay的速度確實沒那麼快,但是真的挺好寫的 我寫的版本測了這題以後又用了一下別人的splay,發現通過這題大多數splay在750ms上下,我是688ms,說明還算是不錯的啦 啦啦啦 include incl...

HNOI2002 營業額統計

傳送門 題目大意 求一段序列,小於當前元素的最大值和大於當前元素的最小值。從該元素前面的元素找。題解 建立線段樹維護或者使用雙向鍊錶.或stl水過 線段樹每次插入乙個新值,查詢大於它的最小值和小於它的最大值 雙向鍊錶有點神.我們知道排序後乙個數的前驅就是小於它的最大值 後繼就是大於它的最小值,我們將...

HNOI2002 營業額統計

其實這個題不用平衡樹也可以過的?資料太水了啊 但是我還是本著聯絡平衡樹的想法打了一遍平衡樹。既然是最小的波動,那麼直接找前驅後繼就可以了呀qwq 如下 include include include include define maxn 100010 using namespace std int...