字典树
LowestJN
强省弱OIer
展开
-
[BZOJ4260][字典树]Codechef REBXOR
记一道字典树模板题#include <cstdio> #include <iostream> #include <algorithm> #define N 400010using namespace std;int n; int a[N],f[N],g[N];struct Trie{ int ch[N*40][2]; int cnt; Trie(){ clear(); }原创 2017-05-16 11:39:53 · 649 阅读 · 0 评论 -
[Trie树优化建图 2-SAT] Codeforces Gym101190B. Binary Code
把所有串建成一棵Trie树,相当于任意一条从根到叶子的链上都至多有一个点,用类似于前缀优化建图的方法建图#include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <vector>using namespace std;const int N=5000010;int n,lst,cnt,原创 2017-10-21 14:25:16 · 935 阅读 · 4 评论 -
[(可持久化)字典树 优化建图][2-SAT] LOJ#6036. && 雅礼集训 2017 Day4. 编码
老早以前的坑了 貌似好多地方都有这个题 因为每个串都只有一个问号,问号可取0可取1,这就是一个经典的2-SAT模型 但是直接做的话,边数是n2n^2级别的,不过因为是01串,可以用可持久化字典树优化建图(可能也可以不可持久化,但是我觉得可持久化比较方便)#include <cstdio> #include <iostream> #include <algorithm> #include <st原创 2017-07-13 17:05:33 · 861 阅读 · 0 评论 -
[xor最小生成树 分治 字典树合并] BNUOJ52318 Be Friends
二进制从高到低分治,当前分治到第 ii 位那么肯定是把第 ii 位为0的放一起,为1的放一起,这两块分别成一个联通块,然后之间连一条边是最优的两块分治下去。找最小边的话一边建字典树,另一边的数在字典树上找#include <cstdio> #include <iostream> #include <algorithm>using namespace std;const int N=100010;ty原创 2017-10-23 20:06:40 · 518 阅读 · 0 评论 -
[博弈 & 字典树合并] BZOJ4730. Alice和Bob又在玩游戏
每棵树单独考虑对于每个子树,通过枚举删去的点,可以算出剩下的所有树的SG值的异或值的集合,集合的MEX就是这个子树的SG值用字典树维护所有情况,合并的时候打个标记,然后字典树合并就行了#include <cstdio> #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N=原创 2018-01-02 17:54:33 · 693 阅读 · 0 评论