
数据结构
文章平均质量分 72
Brightess
毕业于湖南城市学院
目前在某游戏大厂搬砖(
展开
-
2019 徐州网络赛 G-Colorful String(PAM运用)
PAM运用原创 2023-04-25 16:50:15 · 394 阅读 · 0 评论 -
回文自动机(PAM)入门路线 + P3649 【模板】[APIO2014] 回文串(PAM)
PAM 回文自动机 回文树原创 2023-04-22 19:00:09 · 1195 阅读 · 0 评论 -
牛客竞赛字符串专题 NC237308 本质不同公共子串个数(SAM)
SAM 的运用原创 2023-04-19 22:11:05 · 400 阅读 · 0 评论 -
牛客竞赛字符串专题 NC237664 Typewriter(SAM + 树上倍增 + 二分 + 线段树优化dp)
本题主要考察了如何用 SAM,以及如何求 SAM 每个节点 right 集合的 min / max。很有价值的一道串串题。原创 2023-04-18 22:27:21 · 751 阅读 · 0 评论 -
牛客竞赛字符串专题 NC237662 葫芦的考验之定位子串(SAM + 后缀链接树上倍增)
SAM + 后缀链接树上倍增原创 2023-04-16 00:42:37 · 522 阅读 · 0 评论 -
SPOJ-NSUBSTR - Substrings(SAM求所有长度子串的最大出现次数)
你得到了一个最多由250000个小写拉丁字母组成的字符串S。定义Fx为S的某些长度为x的子串在S中的最大出现次数。即FxmaxtimesT)},满足T是S的子串且∣T∣x。例如当Sababa时F32,因为S中有一个出现2次的子串aba。你的任务是对于每个1≤i≤∣S∣输出Fi。原创 2023-04-14 22:47:05 · 482 阅读 · 0 评论 -
P1368 【模板】最小表示法(SAM 求最小循环移位)
小敏和小燕是一对好朋友。他们正在玩一种神奇的游戏,叫 Minecraft。他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。两个工艺品美观的比较方法是,从头开始比较,如果第i个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一样那么继续比较第i1个方块。如果全都一样,那么这两个工艺品就一样漂亮。原创 2023-04-14 21:31:54 · 543 阅读 · 0 评论 -
ICPC SWERC 2020 K - Unique Activities(SAM记录子串第一次出现的位置 or SAM + hash)
SAM firstpos hash原创 2023-04-14 13:13:28 · 849 阅读 · 0 评论 -
SPOJ LCS2 - Longest Common Substring II(SAM 求多串最长公共子串)
就是改变一下输入方式即可。原创 2023-04-09 17:42:47 · 123 阅读 · 0 评论 -
HNCPC 2022 K:Substrings Same as Prefix(SAM 纯板子)
1199 Substrings Same as Prefix 湖南省第十八届大学生计算机程序设计竞赛(HNCPC2022)赛前没有好好地复习 SAM,没出这题责任在我。原创 2023-04-07 21:11:58 · 938 阅读 · 0 评论 -
P3975 [TJOI2015]弦论(SAM DAG、parent树上dp计算不同子串数 递归输出字典序第k大子串)
SAM 中的连边只有两种,一种是 DAG 上的(ch 指针),一种是 parent 树上的(fa 指针),前者是 有向无环图,后者是单向树。一般看到 SAM 会配合基数排序然后倒着维护答案,这个过程实际上模拟的是在 parent 树上的 dfs,更直观的理解就是,利用 fa 指针将 parent 树建出来,然后直接在树上维护信息即可。如果想要维护 dp 的话,需要在 DAG 上跑拓扑,在 parent 树上跑树形 dp。原创 2023-04-07 13:50:59 · 330 阅读 · 0 评论 -
P4070 [SDOI2016]生成魔咒(SAM len数组的含义)
魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符12拼凑起来形成一个魔咒串12。一个魔咒串S的非空字串被称为魔咒串S的生成魔咒。例如S121时,它的生成魔咒有121221121五种。S111时,它的生成魔咒有111111三种,最初 S 为空串。共进行n次操作,每次操作是在S的结尾加入一个魔咒字符。每次操作后都需要求出,当前的魔咒串S共有多少种生成魔咒。原创 2023-04-06 21:27:18 · 388 阅读 · 0 评论 -
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest(A、B、C、H)
2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest(A、B、C、H)原创 2022-10-29 11:22:51 · 667 阅读 · 0 评论 -
力扣周赛 313 反转二叉树的奇数层(dfs镜像遍历 or bfs提取层节点)
dfs镜像遍历 or bfs提取层节点原创 2022-10-27 15:49:42 · 682 阅读 · 0 评论 -
“帆软杯”武汉大学程序设计竞赛 F 最短公共超串(SAM or KMP 求最短公共父串)
SAM or KMP 求最短公共父串原创 2022-10-19 22:13:28 · 592 阅读 · 0 评论 -
强智杯--HNCPC2020(A、B、D、G、I)
强智杯--HNCPC2020(A、B、D、G、I)原创 2022-10-05 22:45:38 · 668 阅读 · 0 评论 -
AtCoder Beginner Contest 271 C Manga(贪心 set 注意事项)
贪心 set 注意事项原创 2022-10-02 16:02:31 · 720 阅读 · 0 评论 -
SPOJ DQUERY D-query(主席树维护区间 求区间内不同数字的个数)
主席树 求区间内不同数字的个数原创 2022-09-02 21:43:20 · 366 阅读 · 0 评论 -
HDU - 2665 Kth number(普通主席树求静态区间第 k 大(小)值 模板)
普通主席树求静态区间第 k 大(小)值 模板原创 2022-09-01 23:05:42 · 202 阅读 · 0 评论 -
SPOJ - COT Count on a tree(树上主席树 求树中路径第 k 小权值 + 倍增 LCA)
树上主席树 求树中路径第 k 小权值 + 倍增 LCA原创 2022-09-01 22:51:44 · 390 阅读 · 0 评论 -
牛客2022 暑期多校6 B Eezie and Pie(树上差分 + 倍增求第 kth 祖先板子)
树上差分 + 倍增求第 kth 祖先原创 2022-08-07 21:26:56 · 319 阅读 · 0 评论 -
牛客2022 暑期多校3 H Hacker(SAM + 线段树查询区间内部最大子段和)
SAM + 线段树维护区间内部最大子段和原创 2022-08-02 20:26:59 · 312 阅读 · 0 评论 -
SPOJ 2774 Longest Common Substring(两串求公共子串 SAM)
SAM 求 LCS原创 2022-08-02 14:38:16 · 171 阅读 · 0 评论 -
AcWing 2811. 多串最长公共子串(SAM 后缀自动机 fa 指针的性质)
SAM fa 后缀链接指针 性质原创 2022-08-01 11:45:03 · 650 阅读 · 1 评论 -
P5231 [JSOI2012]玄武密码(SAM 经典运用 判断是否是原串的子串)
SAM 模板题原创 2022-07-29 20:00:57 · 543 阅读 · 0 评论 -
后缀自动机(SAM)讲解 + Luogu p3804【模板】后缀自动机 (SAM)
后缀自动机 SAM原创 2022-07-28 19:08:55 · 2694 阅读 · 6 评论 -
Atcoder Beginner 202 E - Count Descendants(离线查询 重链剖分树上启发式合并)
dsu on tree 离线查询,为了补这道题花时间学了下 树链剖分 和 dsu on tree原创 2022-07-21 18:39:29 · 280 阅读 · 0 评论 -
启发式合并(含一般式、树上启发式合并 例题)
一般式启发式合并、dsu on tree原创 2022-07-21 12:23:10 · 2722 阅读 · 1 评论 -
树链剖分思想讲解 + AcWing 2568. 树链剖分(dfs序 + 爬山法 + 线段树)
树链剖分原创 2022-07-17 10:12:39 · 562 阅读 · 0 评论 -
基础莫队:AcWing 2492. HH的项链(附玄学优化 奇偶排序)
基础莫队原创 2022-07-12 11:48:44 · 318 阅读 · 1 评论 -
分块思想讲解 + AcWing 243. 一个简单的整数问题2
分块原创 2022-07-11 16:45:09 · 343 阅读 · 0 评论 -
The 15th Chinese Northeast Collegiate Programming Contest D-Lowbit(势能线段树 吉司机线段树)
势能线段树原创 2022-07-08 18:42:21 · 296 阅读 · 0 评论 -
剑指Offer 09.用两个栈实现队列(LIFO与FIFO)
请用栈实现一个队列,支持如下四种操作:push(x) – 将元素x插到队尾;pop() – 将队首的元素弹出,并返回该元素;peek() – 返回队首元素;empty() – 返回队列是否为空;注意:你只能使用栈的标准操作:push to top,peek/pop from top, size 和 is empty;如果你选择的编程语言没有栈的标准库,你可以使用list或者deque等模拟栈的操作;输入数据保证合法,例如,在队列为空时,不会进行pop或者peek等操作;样例MyQueue原创 2021-08-20 11:34:46 · 415 阅读 · 0 评论 -
luogu p2661 信息传递(路径压缩并查集求最小环)
题目描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人从别人口中得知自 己的生日时,游戏结束。请问该游戏一共可以进行几轮?输入格式共2行。第1行包含1个正整数 n ,表示原创 2021-09-28 19:16:13 · 213 阅读 · 0 评论 -
并查集讲解 + AcWing 1250. 格子游戏(并查集判环 )
并查集的回顾:并查集用树的形式维护所有的集合(不一定是二叉树),每一个集合的编号是根节点的编号。对于每个点x我们都存储一下它的父节点p[x]。并查集的操作:(三点核心)一、初始化:初始化将每个点的父节点设为自己即可。O(n)代码实现:void init(int n){ for(int i=1;i<=n;++i)//下标是0是1灵活变化即可 { p[i] = i; }}下面两个并查集基本操作都是近...原创 2022-02-10 18:43:32 · 1552 阅读 · 0 评论 -
AcWing 237. 程序自动分析(第二类离散化 并查集)
题意:输入若干对 两未知数xi、xj 相等 和 不等 的约束条件,判断输入的约束条件是否矛盾。举例:输入一组约束条件:x1=x2,x2=x3,x3=x4,x1≠x4 ,则显然这组约束条件是存在矛盾的,因为前三个可以推出x1=x4,而第四个条件x1≠x4与之矛盾。思路:分析一下上面的举例,我们可以发现这组约束条件中**“相等”的约束条件可以看做是一个并查集合并的过程,如x1=x2,相当于是将x1,x2合并到一个集合的操作,而“不等”**的约束条件,如x1≠x4相当于是在说x1和x4不属于一个集...原创 2022-02-11 10:57:22 · 671 阅读 · 0 评论 -
AcWing 238. 银河英雄传说(并查集 维护树大小、节点与祖宗节点的距离)
自认为不能将本题的各种细节和注意点讲得尽善尽美,因此将一位dalao的题解拖了过来,我的任务就是将代码写好,并稍微更改一下排版,使之阅读体验更佳。题意:有 T 条指令,指令格式分为以下两种:M i j:让第 i 号战舰所在列的全部战舰保持原有顺序,接在第 j 号战舰所在列的尾部。(_union)C i j:询问第 i 号战舰与第 j 号战舰当前是否处于同一列中(if(find(i)==find(j))),如果在同一列中,它们之间间隔了多少艘战舰。如果不在同一列,则输出“-1”。思路:以前...原创 2022-02-11 16:27:04 · 538 阅读 · 2 评论 -
AcWing 239. 奇偶游戏(边带权/扩展域并查集 离散化 xor)
题意:有一个长度为n的序列,给出m条限制,给出区间[l,r]和parity(中文意思是奇偶性)。①parity == "odd" 表示[l,r]区间内'1'的个数是奇数。②parity == "even" 表示[l,r]区间内'1'的个数是偶数。请你输出最小的不满足条件的编号减一,如果全部满足,输出限制条件总数m。思路:对于本题我们可以有两种做法,第一种是“边带权”并查集,第二种是“扩展域”并查集。一、由题意,我们很容易了解到,这个题描述的是区间关系,而并查集只能作用于两个点的关系,因...原创 2022-02-12 13:08:13 · 2899 阅读 · 0 评论 -
树状数组介绍(蓝书详细讲解)+ AcWing 241. 楼兰图腾(树状数组模板题 区间查询 单点修改 逆序对思想 )
树状数组介绍以及如何用于求逆序对(蓝书讲解):经典例题:AcWing 241. 楼兰图腾空白代码:#include<bits/stdc++.h>using namespace std;#define int long longconst int N = 2e5+10;int a[N], c[N], up[N], down[N];int n;inline int lowbit(int x) {return x & (-x);}int ask(int原创 2022-02-13 00:24:36 · 590 阅读 · 2 评论 -
AcWing 242. 一个简单的整数问题(树状数组+差分 区间增加 单点查询)
前置知识:树状数组、差分。题意:思路:本题的指令有“区间增加”,“单点查询”。这两个指令是 裸的差分 所能够完成的,前者O(1),后者O(n),不过根据题目,元素个数n和询问次数m的数据范围均为1e5,如果用裸的差分,完成m次单点查询需要O(n^2),显然不合法,应当舍弃。正确做法:树状数组+差分,或者说用差分数组来建立树状数组。而树状数组基本指令为:“单点增加”,“区间查询”,当结合了差分数组就能够实现“区间增加”,“单点查询”了!(差分数组的单点增加,对应原数组区间增加,差分数组查..原创 2022-02-13 13:12:46 · 250 阅读 · 0 评论