STL tree练习题
两个坑点
- BZOJ上编译器版本较低,定义tree的时候null_type要改成null_mapped_type
- 讲道理splay_tree_tag要快一点,毕竟总复杂度是nlogn然而在BZOJ一直T,改成rb_tree_tag就过了……据说ov_tree_tag也过不了
其他的就跟普通的平衡树启发式合并一样做就好了
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <ctime>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define N 100010
using namespace std;
using namespace __gnu_pbds;
typedef pair<int,int> paris;
tree<paris,null_type,greater<paris>,rb_tree_tag,tree_order_statistics_node_update> T[N];
tree<paris,null_type,greater<paris>,rb_tree_tag,tree_order_statistics_node_update>::iterator itr;
//tree<paris,null_mapped_type,greater<paris>,rb_tree_tag,tree_order_statistics_node_update> T[