題目大意
寫一個資料結構, 支援插入資料以及求第 大。
題解
看其他人提解,這一題可以暴力 水過去,不過複雜度看起來不正確就是了。
如果不想寫平衡樹,可以直接用黑魔法平衡樹 (pbds tree),有內建 find_by_order
求第 大,可以穩定 解出來。
AC Code
風子ちゃんがかわいい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include <bits/stdc++.h> using namespace std; using ll = long long;
#include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using pii = pair<int, int>; tree<pii, null_type, greater<pii>, rb_tree_tag, tree_order_statistics_node_update> hitode;
int main() { ios::sync_with_stdio(false); cin.tie(0);
string cmd; int val, t = 0; while (cin >> cmd) { if (cmd[0] == 'E') break; cin >> val;
if (cmd[0] == 'G') { hitode.insert(make_pair(val, t++)); } else { auto ptr = hitode.find_by_order(val - 1); cout << ptr->first << '\n'; } } }
|
OJ 連結
連結:https://zerojudge.tw/ShowProblem?problemid=d314