摘要:
分 块 模板题 传送门 没有专门模板,就直接用线段树1啦,其实都一样 数据结构讲解 说句良心话,分块真的不难理解,甚至比树状数组,线段树更容易,只是效率偏低 一句话概括分块:大段维护,局部朴素 怎么理解呢? 以模板题(区间求和,区间更新)为例,将原数列划分成t个块,每个块的大小不超过根号n,我们预处 阅读全文
摘要:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int read() { int re = 0 , sig = 1; char c = getchar(); while(c < '0' || 阅读全文
摘要:
题目 传送门 思路 这·是·蓝·题?! 这不是裸的trie吗,感觉最多去到绿色 跟这题几乎一样,甚至更简单,对trie求前缀和即可,水题,不细讲 代码 #include <iostream> #include <cstdio> #define nn 1000010 using namespace s 阅读全文
摘要:
题目 传送门 思路 别在意这是一道紫题,其实还是能做的 首先要知道:异或运算满足交换律,结合律,a xor a = 0,一个点A到另一个点B的异或路径长度等于(A到C的异或路径长度 xor B到C的异或路径长度),其中C为任一点 为什么? 假设C是树的根,后者只是比前者多跑了2遍C到lca(A,B) 阅读全文
摘要:
题目 传送门 思路 作为一道蓝题,这题并不难想,就是细节有点多 真的挺好的一道题,把线段树和trie很好地融合到一起 以样例为例,建一棵如下的01trie,其中,红色数字就是输入进来的a,根到该数字的路径形成的数字就是该数字下标的二进制表示(从低位到高位) 例如,4这个数字:根到4的路径为0->0- 阅读全文
摘要:
题目 传送门 一道很好的trie练手题 思路 如果有更好的优化方法欢迎留言哦~~ 这里写的可能比较难懂,结合代码食用效果更佳 根据k和a的大小(1e6),可知它们在二进制下大概就去到20位的样子,为了保险,我们取21位 对于每一个a,我们建一棵深度为21(不计算根)的trie,结点为0或1,从高位到 阅读全文
摘要:
模板题 由于找不到最直接的模板,就拿了一个最裸的题权当模板 传送门 大体思路 应用&结构:用于实现字符串快速检索的多叉树结构 总思路其他博客已经很详尽,这里不再赘述~~(其实懒得画图)~~ 定义&初始化 定义trie[SIZE][30](假设只有小写字母),trie[i][j]表示当前在i结点,编号 阅读全文
摘要:
模板题 传送门 很疑惑怎么就是蓝题了,这算法不难理解呀~~(比KMP好多了)~~ 概念 给定一个字符串s,不断把s的最后一个元素放到开头,可以得到n个字符串,其中字典序最小的一个称为s的最小表示. 另外,这n个字符串被称作是循环同构的,为了方便叙述,这里定义b[]存储s的循环同构字符串,且b[i]表 阅读全文
摘要:
儒略日 题目 传送门 思路 毫无思路 反思 非常麻烦的一道题,居然还是第一题!!!看了好久题目感觉做不出来,半个小时就放弃了~~(还好放弃了)~~ 虽然及时放弃了这道题,但是也浪费了半个小时(不然第二题的错误可能就查出来了),以后还是要多注意时间 动物园 题目 传送门 思路 其实不难的一道题~~(但 阅读全文
摘要:
虽然不知道失配树是什么,看这题是为数不多的KMP练手的"能做的题"之一,就把这道题切了 题目 传送门 个人觉得题目已经非常简洁明了,感动,就不再重复题意 思路 KMP+LCA 先推一道题,对这题应该有帮助:传送门 KMP中,next[i]是由next[1~i-1]得到的,若next[i]由next[ 阅读全文