![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【数据结构】字典树
文章平均质量分 87
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【BZOJ3469】ADERA
【题目链接】点击打开链接【思路要点】字典树套线段树即可。时空复杂度\(O(NLogN)\)。【代码】#includebitsstdc++.husing namespace std;const int MAXN = 1e5 + 5;const int MAXP = 3e6 + 5;template typename T void chkmax(T &x, T y) {x = max(...原创 2018-04-12 13:20:23 · 208 阅读 · 0 评论 -
【BZOJ4730】Alice和Bob又在玩游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005#define MAXP 20000005#define MAXLOG 20vector <int> a[MAXN];int sg[MAXN], n, m, root[MAXN]...原创 2018-04-13 20:12:11 · 1956 阅读 · 0 评论 -
【BZOJ4489】【JSOI2015】地铁线路
【题目链接】点击打开链接【思路要点】用字典树存储字符串,把字符串转化为整数。对于第一问,我们将站点向被经过的路线连边,边权为1,将路线向经过的站点连边,边权为0。计算\(S\)到\(T\)的最短路,即为第一问的答案,由于是0/1边权的最短路,我们可以用BFS实现。按照第一问处理出的最短路(就是从\(S\)到该路线的最短路)从短到长的顺序处理每一条路线。由于要求满足第一问的限制,对于每一条路线,我们...原创 2018-04-19 17:26:53 · 460 阅读 · 0 评论 -
【BZOJ4477】【JSOI2015】字符串树
【题目链接】点击打开链接【思路要点】用可持久化字典树维护每个点到根路径上字符串的字典树。询问时分别查询\(x\),\(y\)和\(Lca(x,y)\)即可。时间复杂度\(O((N+Q)(|S|+LogN))\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 5;const int MAX...原创 2018-04-19 20:24:46 · 217 阅读 · 0 评论 -
【CodeForces】CodeForces Round #476 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Paper Airplanes【思路要点】按照题意计算即可。时间复杂度\(O(1)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void chkmax(T &x,...原创 2018-05-01 19:28:18 · 260 阅读 · 0 评论 -
【CodeForces】CodeForces Round #477 (Div. 1 + Div. 2) 题解
【比赛链接】Div. 1Div. 2【题解链接】点击打开链接【Div.2 A】Mind the Gap【思路要点】从小到大枚举答案,检查合法性。时间复杂度\(O(Ans*N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> vo...原创 2018-05-07 20:04:26 · 1609 阅读 · 1 评论 -
【省内训练2018-09-13】Border
【思路要点】 注意到字符串的生成方式近乎随机,不妨认为对于一个后缀 S[i...N]S[i...N]S[i...N] 与其余后缀的 LCPLCPLCP 的最大值 kikik_i 不会很大,事实上,当字符串随机时, kikik_i 期望为 O(LogN)O(LogN)O(LogN) 级别。 用后缀树求出 kikik_i ,那么 S[i...i],S[i...i+1],...,S[...原创 2018-09-13 16:08:39 · 340 阅读 · 0 评论 -
【校内训练2019-01-18】排列
【思路要点】最大值一定是最高的存在差异的位为 111 和 000 的两个数异或得到。把所有数字分成两个集合 S0,S1S_0,S_1S0,S1,其中 S0S_0S0 是该位为 000 的数的集合, S1S_1S1 是该位为 111 的数的集合。可以用字典树找到异或最大值最小是多少,然后依次尝试放入一个数,判断剩余序列是否存在合法解。并且,实际上我们只需要尝试三种方式即可:(1)...原创 2019-01-18 12:58:13 · 181 阅读 · 0 评论 -
【校内训练2019-04-10】神犇
【思路要点】令 ai=cntxi−cntyi,bi=cntyi−cntzi,ci=cntzi−cntxia_i=cntx_i-cnty_i,b_i=cnty_i-cntz_i,c_i=cntz_i-cntx_iai=cntxi−cntyi,bi=cntyi−cntzi,ci=cntzi−cntxi , sis_isi 表示 iii 处的前缀异或和。则答案 AnsiAns...原创 2019-04-11 15:34:51 · 260 阅读 · 0 评论