摘要: #include <bits/stdc++.h> using namespace std; typedef unsigned int uint; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> 阅读全文
posted @ 2021-01-12 15:45 purinliang 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 尽量只对无符号数使用移位运算 右移:丢弃最低位,向下取整,(-1>>1的结果是-1) 左移:有符号数 位运算的优先级,除了取反符高于算术运算符,其他符号都低于算术运算符。 其中& | ^的优先级甚至低于比较运算符。 判断是否是二的非负整数次幂: bool isPowerOfTwo(int n) { 阅读全文
posted @ 2021-01-12 04:59 purinliang 阅读(197) 评论(0) 推荐(0) 编辑
摘要: struct TrieNode { int cnt; int nxt[26]; void Init() { cnt = 0; memset(nxt, 0, sizeof(nxt)); } }; struct Trie { static const int MAXN = 4000000; TrieNo 阅读全文
posted @ 2021-01-12 04:38 purinliang 阅读(56) 评论(0) 推荐(0) 编辑
摘要: struct SegmentTree { #define ls (o<<1) #define rs (o<<1|1) static const int MAXN = 100000; int cnt[(MAXN << 2) + 5]; void PushUp(int o) { cnt[o] = cnt 阅读全文
posted @ 2021-01-12 01:21 purinliang 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 下面代码的删除部分是有错的,不能用!!!应该是del[0]没有在Init的时候清空。另外这些函数也太难用了。 代码 /* Treap : 完整版 */ struct Treap { private: static const int TREAP_MAXN = 2e5 + 5; static cons 阅读全文
posted @ 2021-01-12 01:17 purinliang 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 加上logn计算第k大的方法,就可以用于通过“普通平衡树”这道题。 struct BinaryIndexTree { static const int MAXN = 500000 + 10; int n, A[MAXN]; int cnt[MAXN], siz[MAXN]; void InitVal 阅读全文
posted @ 2021-01-12 00:50 purinliang 阅读(153) 评论(0) 推荐(0) 编辑