————字符串————
文章平均质量分 51
Michael_GLF
AFOing
展开
-
【洛谷4735】 最大异或和(可持久化01Trie)
传送门【题目分析】emmmm,似乎是个最大异或和的模板?先将第二个操作里的式子转一下,求a[p]^a[p+1]^....a[n]^x等价于前缀异或和sum[p-1]^sum[n]^x,后面两个的异或值是一个定值,所以我们只用在[l,r]中找到使sum[p]^(sum[n]^x)最大的即可。【代码~】#include<bits/stdc++.h>using nam...原创 2019-11-15 08:02:51 · 309 阅读 · 0 评论 -
【校内OJ2645】 hyc的xor/mex (01Trie)
传送门【题目分析】因为所有的操作都是对于全局的,所以可以单独把所有操作的值x存下来,每次询问的时候带到Trie上跑就好了。(wsm会有什么权值线段树这种东西?【代码~】#include<bits/stdc++.h>using namespace std;const int MAXN=1e7+10;int n,q;int tag;int siz[MAXN...原创 2019-11-15 07:51:05 · 283 阅读 · 0 评论 -
NOIP模拟 位运算(trie树+按位贪心)
【题目描述】有q次操作,每次操作是以下两种:1、 加入一个数到集合中2、 查询,查询当前数字与集合中的数字的最大异或值,最大and值,最大or值【输入格式】第一行1个正整数Q表示操作次数接下来Q行,每行2个数字,第一个数字是操作序号OP(1,2),第二个数字是X表示操作的数字【输出格式】输出查询次数行,每行3个整数,空格隔开,分别表示最大异或值,最大and值,最大o...原创 2018-08-21 17:11:09 · 340 阅读 · 0 评论 -
KMP算法的一点学习笔记
博主太菜了,看不懂后缀数组就先滚回来看看KMP。(假设各位不会什么字符串哈希)对于子串查找这类问题,如果我单纯询问一个字符串s1中出现了多少次s2,暴力方法很好想,直接固定起点向后枚举,如果在跳到长度为s2之前就出现不同点,那么这个起点就不行,起点向右挪一位,重复这个操作直到跑到(s2-s1+1)的位置。但这个算法的复杂度非常高,最高可达到O(nm),显然无法解决n>=1000的...原创 2018-11-30 21:55:45 · 194 阅读 · 0 评论 -
洛谷3294 【SCOI2016】背单词(Trie树)
洛谷传送门【题目分析】这题目描述真是令人窒息。3个条件的意思大概是这样:(1).如果有单词作为现在正在填入的单词的后缀但并未填入,将花费n*n的代价。(2).如果没有单词作为当前填入单词的后缀,代价为当前填入单词序号x(3).如果所有作为该单词的后缀的单词之前都已经填入,那么代价为当前序号x-最后一个作为当前单词的后缀的单词的序号y。读懂题以后这道题还是比较明显的贪心。...原创 2018-12-22 10:39:19 · 204 阅读 · 0 评论 -
Trie树一点学习笔记
写在前面蒟蒻太菜了看不懂AC自动机指针版(其实就是不会指针),所以反过头来重新看看Trie树。Trie树是什么?Trie树,又称字典树,其实为前缀树,因为从根节点到每一个节点都会对应原众多字符串的其中一些的前缀。Trie树上可以打标记,含义随题意而变。Trie树也是某种意义上的自动机,节点代表状态,边代表转移。举个小例子:(woc画丑了)Trie树的一些操作1....原创 2018-12-22 14:53:55 · 217 阅读 · 0 评论 -
洛谷2375 【NOI2014】动物园(KMP)
传送门【题目分析】nxt数组就是存储的失配位置,所以只用根据题目意思,求出每个位置的nxt并一直跳直到这个前(后)缀长度小于串长的一半即可统计答案,记得+1。【代码~】#include<bits/stdc++.h>using namespace std;typedef long long LL;const int MAXN=1e6+10;const int M...原创 2018-12-28 00:22:34 · 293 阅读 · 0 评论 -
POJ2406 Power String(KMP)
传送门【题目分析】相当于是求字符串的最小循环节,应用了KMP求最小循环节的知识。看一个例子:有这张图可以知道,因为nxt表示前缀与后缀相同的长度,所以只要虚线之前的部分相同,那么就可以开始循环证明相等。可以发现,如果len(s)-nxt(s)能整除len(s)的话,那么这就是循环节长度。【代码~】#include<bits/stdc++.h>usin...原创 2019-01-02 12:12:31 · 142 阅读 · 0 评论 -
LOJ6144 可持久化数据结构(可持久化Trie)
传送门【题目分析】emmm,不会啊qwq。好像是强行重构字典树?喵喵喵?先把标程拍上来,看懂再更吧。【代码~】#include<bits/stdc++.h>using namespace std;const int MAXN=1e5+10;int n,q;int a[MAXN];int t[MAXN*20][2],siz[MAXN*20],tot;...原创 2019-01-25 16:40:33 · 284 阅读 · 0 评论 -
洛谷2292 【HNOI2004】L语言(Trie树)
传送门【题目分析】其实方法还是很好想的,肯定是将所有的单词丢进一棵Trie树里进行操作。所以关键是如何对文本进行查询。我们直接深搜,对每个位置查找下一位是否可以接上,如果扫完了一个单词,那么直接枚举从这个位置断开的方案。当然如果接不上直接break掉就行了,记得每次都要更新ans。对于一个地方,如果已经搜过了那么没必要再搜一次因为可以接上的最大长度不会改变。【代码~】...原创 2019-02-10 21:59:29 · 228 阅读 · 0 评论 -
Codechef Favourite Numbers(数位DP+AC自动机+二分)
传送门【题目分析】第一次知道数位DP可以和AC自动机套起来用。。。Orz二分是很明显的,可以先计算L前的数量+k再二分,这样不用考虑下界(但我写的是考虑下界,所以跑一次就完了)。然后就是考虑如何统计是否有子串出现,这个地方显然不能强行枚举,但这个问题其实就是询问文本串是否在当前串中出现过,赤裸裸的AC自动机,转移的时候直接在AC自动机上判下一位是否有结束标记即可。【代码~】...原创 2019-02-16 12:03:15 · 454 阅读 · 0 评论