OJ-Problems-Source/.ACM-Templates/.Not classified/黑科技.cpp

219 lines
9.0 KiB
C++
Raw Normal View History

2016-08-13 23:07:20 +08:00
//<2F><>ջ
//G++
int main() {
int sz = 100 << 20; //100MB
char *p = (char *)malloc(sz) + sz;
__asm__ __volatile__(
#if __x86_64__ || __ppc64__ || _WIN64 //64-bit
"movq %0, %%rsp\n pushq $_exit\n"
#else //32-bit
"movl %0, %%esp\n pushl $_exit\n"
#endif
:: "r"(p));
//......
exit(0);
}
//VC++ 100MB
#pragma comment(linker, "/STACK:102400000,102400000")
//λ<><CEBB><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>0 | (100101111->100100000) | x and (x+1)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>0<EFBFBD><30><EFBFBD><EFBFBD>1 | (100101111->100111111) | x or (x+1)
//<2F><><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>1 | (11011000->11011111) | x or (x-1)
//ȡ<>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 | (100101111->1111) | (x xor (x+1)) shr 1
//ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | (100101000->1000) | x and (x xor (x-1))
//ö<><C3B6>i<EFBFBD>ķǿ<C4B7><C7BF>Ӽ<EFBFBD>j
for (int j = i; j; j = (j - 1) & i);
//builtin<69><6E><EFBFBD><EFBFBD>
int __builtin_ffs(int x);
int __builtin_ffsll(long long);
//Returns one plus the index of the least significant 1-bit of x, or if x is zero, returns zero.
int __builtin_clz(unsigned int x);
int __builtin_clzll(unsigned long long);
//Returns the number of leading 0-bits in x, starting at the most significant bit position. If x is 0, the result is undefined.
int __builtin_ctz(unsigned int x);
int __builtin_ctzll(unsigned long long);
//Returns the number of trailing 0-bits in x, starting at the least significant bit position. If x is 0, the result is undefined.
int __builtin_clrsb(int x);
int __builtin_clrsbll(long long);
//Returns the number of leading redundant sign bits in x, i.e. the number of bits following the most significant bit that are identical to it. There are no special cases for 0 or other values.
int __builtin_popcount(unsigned int x);
int __builtin_popcountll(unsigned long long);
//Returns the number of 1-bits in x.
int __builtin_parity(unsigned int x);
int __builtin_parityll(unsigned long long);
//Returns the parity of x, i.e. the number of 1-bits in x modulo 2.
uint32_t __builtin_bswap32(uint32_t x);
uint64_t __builtin_bswap64(uint64_t x);
//Returns x with the order of the bytes reversed; for example, 0xaabb becomes 0xbbaa. Byte here always means exactly 8 bits.
//rope O(log(len))
#include <ext/rope>
using namespace __gnu_cxx;
//pb_ds<64><73>
//http://gaotianyu1350.gitcafe.io/2015/02/17/pbds/
//priority_queue
//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext/pb_ds/priority_queue.hpp
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__gnu_pbds::priority_queue<T>
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//template<typename Value_Type,
// typename Cmp_Fn = std::less<Value_Type>,
// typename Tag = pairing_heap_tag,
// typename Allocator = std::allocator<char>>
//class priority_queue;
//Value_Type<70><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//Cmp_Fn<46><6E><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ƚ<EFBFBD><C8BD><EFBFBD>
//Tag<61><67><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD>͡<EFBFBD><CDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>binary_heap_tag<61><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD>binomial_heap_tag<61><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD>rc_binomial_heap_tag pairing_heap_tag<61><67><EFBFBD><EFBFBD><EFBFBD>Զѣ<D4B6>thin_heap_tag
//Allocator<6F><72><EFBFBD><EFBFBD><EFBFBD>ù<EFBFBD>
//ʹ<><CAB9>
//<2F><><EFBFBD><EFBFBD>STL<54>е<EFBFBD>priority_queue<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>begin()<29><>end()<29><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>void erase(point_iterator)
//<2F><><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>ijһԪ<D2BB>ص<EFBFBD>ֵvoid modify(point_iterator, const_reference)
//<2F>ϲ<EFBFBD>void join(priority_queue &other)<29><><EFBFBD><EFBFBD>other<65>ϲ<EFBFBD><CFB2><EFBFBD>*this<69><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>other<65><72><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
//<2F><><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD><EFBFBD><EFBFBD>push<73><68>pop<6F><70>modify<66><79>erase<73><65>join
//pairing_heap_tag<61><67>push<73><68>joinO(1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̯O(logn)
//binary_heap_tag<61><67>ֻ֧<D6BB><D6A7>push<73><68>pop<6F><70><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>̯O(logn)
//binomial_heap_tag<61><67>pushΪ<68><CEAA>̯O(1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪO(logn)
//rc_binomial_heap_tag<61><67>pushΪO(1)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪO(logn)
//thin_heap_tag<61><67>pushΪO(1)<29><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>join<69><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪO(logn)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>increase_key<65><79>modify<66><79>̯O(1)
//<2F><>֧<EFBFBD>ֲ<EFBFBD><D6B2>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>½<EFBFBD><C2BD>ۣ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD>Dijkstra<72><EFBFBD><E3B7A8>pairing_heap_tag<61>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>thin_heap_tag<61><67><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݽṹ<DDBD>
//<2F>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>󷨺<EFBFBD>
//binary_heap_tag<61>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>std::priority_queue
//pairing_heap_tag<61>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>binomial_heap_tag<61><67>rc_binomial_heap_tag
//ֻ<><D6BB>push<73><68>pop<6F><70>join<69><6E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>binary_heap_tag<61>ٶȽϿ<C8BD>
//<2F><><EFBFBD><EFBFBD>modify<66><79><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>pairing_heap_tag<61><67>thin_heap_tag<61><67><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݽṹ
//Tree
//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext/pb_ds/assoc_container.hpp<70><70>ext/pb_ds/tree_policy.hpp
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__gnu_pbds::tree<Key, T>
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//template<typename Key,
// typename Mapped,
// typename Cmp_Fn = std::less<Key>,
// typename Tag = rb_tree_tag,
// template<typename Const_Node_Iterator,
// typename Node_Iterator,
// typename Cmp_Fn_,
// typename Allocator_ >
// class Node_Update = null_tree_node_update,
// typename Allocator = std::allocator<char>>
//class tree;
//Tag<61><67>tree<65><65><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>rb_tree_tag<61><67>splay_tree_tag<61><67>ov_tree_tag
//Node_Update<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pb_ds<64>Դ<EFBFBD><D4B4><EFBFBD>tree_order_statistics_node_update<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tree<65>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>find_by_order<65><72>order_of_key
//iterator find_by_order(size_type order)<29><><EFBFBD>ҵ<EFBFBD>order + 1С<31><D0A1>Ԫ<EFBFBD>صĵ<D8B5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>order̫<72><CCAB><EFBFBD><EFBFBD><E1B7B5>end()
//size_type order_of_key(const_key_reference r_key)<29><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tree<65><65><EFBFBD>ж<EFBFBD><D0B6>ٱ<EFBFBD>r_keyС<79><D0A1>Ԫ<EFBFBD><D4AA>
//ʹ<><CAB9>
//<2F><>mapʹ<70>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>begin()<29><>end()<29><>size()<29><>empty()<29><>clear()<29><>find(const Key)<29><>
//lower_bound(const Key)<29><>upper_bound(const Key)<29><>erase(iterator)<29><>erase(const Key)<29><>
//insert(const pair<Key, T>)<29><>operator[](const Key)
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>set<65><74>ֻ<EFBFBD><D6BB>Ҫ<EFBFBD><D2AA><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Mapped<65><64>Ϊnull_type<70><65><EFBFBD><EFBFBD>4.4.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>°汾<EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>null_mapped_type<EFBFBD><EFBFBD><EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD>pair<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Key<EFBFBD><EFBFBD><EFBFBD><EFBFBD>set<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>һЩ<D2BB><D0A9><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>
//void join(tree &other)<29><><EFBFBD><EFBFBD>other<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>*this<69>ϣ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3><EFBFBD><ECB3A3>
//void split(const_key_reference r_key, tree &other)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>other<65><72>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>*this<69><73><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>r_key<65><79>Ԫ<EFBFBD><D4AA><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>other
//<2F>Զ<EFBFBD><D4B6><EFBFBD>Node_Updateʹ<65>÷<EFBFBD><C3B7><EFBFBD>
//<2F>Դ<EFBFBD><D4B4><EFBFBD>tree_order_statistics_node_updateͳ<65>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>size
//<2F>Լ<EFBFBD><D4BC>޸ľͿ<C4BE><CDBF><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD><EFBFBD><EFBFBD>׺ϲ<D7BA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><><EFBFBD>´<EFBFBD><C2B4><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
template<class Node_CItr, class Node_Itr, class Cmp_Fn, class _Alloc>
struct my_node_update {
virtual Node_CItr node_begin()const = 0;
virtual Node_CItr node_end()const = 0;
typedef int metadata_type; //<2F>ڵ<EFBFBD><DAB5>ϼ<EFBFBD>¼<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
inline void operator()(Node_Itr it, Node_CItr end_it) {
Node_Itr l = it.get_l_child(), r = it.get_r_child();
int left = 0, right = 0;
if (l != end_it) { left = l.get_metadata(); }
if (r != end_it) { right = r.get_metadata(); }
const_cast<metadata_type &>(it.get_metadata()) = left + right + (*it)->second;
}
inline int prefix_sum(int x) {
int ans = 0;
Node_CItr it = node_begin();
while (it != node_end()) {
Node_CItr l = it.get_l_child(), r = it.get_r_child();
if (Cmp_Fn()(x, (*it)->first)) { it = l; }
else {
ans += (*it)->second;
if (l != node_end()) { ans += l.get_metadata(); }
it = r;
}
}
return ans;
}
inline int interval_sum(int l, int r) {
return prefix_sum(r) - prefix_sum(l - 1);
}
};
int main() {
tree<int, int, std::less<int>, rb_tree_tag, my_node_update> T;
T[2] = 100; T[3] = 1000; T[4] = 10000;
printf("%d\n%d\n", T.interval_sum(3, 4), T.prefix_sum(3));
}
//ע<>
//<2F><>Node_Itr<74><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E9A3BA>get_l_child<6C><64>get_r_child<6C><64>ȡ<EFBFBD><C8A1><EFBFBD>Ҷ<EFBFBD><D2B6>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻţ<C7BA>һ<EFBFBD><D2BB><EFBFBD>Ǻ<EFBFBD>ֻ<EFBFBD>ǻ<EFBFBD>ȡ<EFBFBD><C8A1>iterator<6F><72><EFBFBD><EFBFBD>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>get_metadata<74><61>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//operator()<29>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD>ǽ<EFBFBD><C7BD>ڵ<EFBFBD>it<69><74><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end_it<69><74>ʾ<EFBFBD>սڵ<D5BD>
//<2F><><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>
//<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ݽṹ<DDBD><EFBFBD>࣬rb_tree_tagҪ<67><D2AA><EFBFBD><EFBFBD>
//Hash
//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext/pb_ds/assoc_container.hpp<70><70>ext/pb_ds/hash_policy.hpp
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//__gnu_pbds::cc_hash_table<Key, Mapped>
//__gnu_pbds::gp_hash_table<Key, Mapped>
//ʹ<><CAB9>
//֧<><D6A7>find<6E><64>operator[]
//Trie
//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext/pb_ds/assoc_container.hpp<70><70>ext/pb_ds/trie_policy.hpp
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__gnu_pbds::trie<Key, Mapped>
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//template<typename Key,
// typename Mapped,
// typename Cmp_Fn = std::less<Key>,
// typename Tag = pat_trie_tag,
// template<typename Const_Node_Iterator,
// typename Node_Iterator,
// typename E_Access_Traits_,
// typename Allocator_>
// class Node_Update = null_trie_node_update,
// typename Allocator = std::allocator<char>>
//class trie;
//Key is the key type.
//Mapped is the mapped-policy, and is explained in Tutorial::Associative Containers::Associative Containers Others than Maps.
//E_Access_Traits is described in Element-Access Traits.
//Tag specifies which underlying data structure to use, and is described shortly.
//Node_Update is a policy for updating node invariants. This is described in Node Invariants.
//Allocator is an allocator type.
//<2F><><EFBFBD>ܣ<EFBFBD>
//pair<const_iterator, const_iterator> prefix_range(key_const_reference)
//Finds the const iterator range corresponding to all values whose prefixes match r_key
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>trie<69><65>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ôдtrie<string, [your type here], string_trie_e_access_traits<>, pat_trie_tag, trie_prefix_search_node_update>
//List<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>multimap/multiset<65><74>
//<2F><><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ext/pb_ds/assoc_container.hpp<70><70>ext/pb_ds/list_update_policy.hpp
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__gnu_pbds::list_update<Key, Mapped>
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//template<typename Key,
// typename Mapped,
// typename Eq_Fn = std::equal_to<Key>,
// typename Update_Policy = move_to_front_lu_policy<>,
// typename Allocator = std::allocator<char>>
//class list_update;
//<2F>ܽ<EFBFBD>
//priority_queue<75><65><EFBFBD><EFBFBD>STL<54><4C><EFBFBD><EFBFBD>֧<EFBFBD><D6A7><EFBFBD><EFBFBD>modify<66><79>erase<73><65>join
//tree<65><65><EFBFBD><EFBFBD><E0B5B1>STL<54>е<EFBFBD>set/map<61><70><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>split<69><74>join<69><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tree_order_statistics_node_update<74><65>֧<EFBFBD>ֲ<EFBFBD>ѯrank<6E><6B>kСֵ<D0A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>Node_Update<74><65>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
//<2F><>Ŀǰ<C4BF><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>STLû<4C>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>hash_table
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pb_ds<64><73><EFBFBD><EFBFBD>std::set/map/priority_queue<75><65><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>