##缘起 自从微软退出了netcore,那么对于.net程序员最快乐的事情莫过于可以抛弃被人鄙夷的windows操作系统了。拥抱linux,拥抱开源,看着linux的命令窗口才有那么一丝丝高深莫测的味道~ 写netcore也挺久了,但是也一直部署在windows服务器上,于是今天便忙里偷闲,来尝试一 ...
分类:
Web程序 时间:
2020-07-29 10:00:06
阅读次数:
78
1.可持久化线段树 又称主席树,因为发明这一算法的人的名字缩写为HJT。 主席树可以储存各个历史状态,如果用普通线段树,每个状态都是 4n 的,内存和时间开销极大,而主席树通过动态开点,先继承上一状态的左右儿子节点指针,再进行修改,每次修改的时间和空间都可以优化到 \(\log n\) 级别。 通过 ...
分类:
其他好文 时间:
2020-07-28 22:48:06
阅读次数:
88
题目链接:https://www.acwing.com/problem/content/258/ 题目给出长度为n的序列,操作有两种,求[p,n]段的异或和再与x的异或,或者增加一个数x,使用可持久化Trie和异或前缀和可以解决,但是需要在[l-1,r-1]区间内,右区间自然满足,左区间的话需要加上 ...
分类:
编程语言 时间:
2020-07-25 23:31:49
阅读次数:
75
字典树是一种实现字符串快速检索的多叉树结构。每个节点都拥有很多个指针。 模板提https://www.acwing.com/problem/content/144/。 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 ...
分类:
其他好文 时间:
2020-07-24 21:16:00
阅读次数:
64
Trie字符串统计 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x; “Q x”询问一个字符串在集合中出现了多少次。 共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母。 输入格式 第一行包含整数N,表示操作数。 接下来N行,每行包含一个操作指令, ...
分类:
其他好文 时间:
2020-07-24 21:14:58
阅读次数:
68
[ZJOI2015]诸神眷顾的幻想乡 题意 树上每个点代表一个字符,问树上路径可以组成多少不同的字符串(叶子最多有20个) 题解 树上的路径一定是叶子为根的一条从上到下的路径,而叶子有很小,我们就可以把所有叶子构成的 trie 建成一个广义的 sam,最后统计不同字串个数即可 #include<io ...
分类:
其他好文 时间:
2020-07-24 19:08:01
阅读次数:
67
题目链接 #解题思路 将所有的字符串编码看成是一棵trie,因为所有的字符串都不互为前后缀,所以每一个字符串都末尾都位于trie的叶子结点上。 因为要确保总长度最小,所以对于出现次数越多的字符串,其叶子在trie上的深度就越浅,那么出现次数越少的字符显然其叶子深度也就越深。所以可以用出现次数做权值, ...
字典树 字典树比较普通字符串比较而言,字符的可操作性更强 const int maxn=5e5+5; //maxn为总结点个数,不是总深度 struct trie{ int nex[maxn][26],cnt=0; bool exist[maxn]; void insert(string s){ i ...
分类:
其他好文 时间:
2020-07-21 14:19:54
阅读次数:
64
记住一件事情即可:Trie是高效存储和查找字符串集合的数据结构 一般来说题目是会限制字母的种类,不会太多 #include <iostream> #include <cstring> #include <string> #include <cmath> #include <cstdio> #incl ...