数据结构与算法
文章平均质量分 82
自己平时刷数据结构和算法题的笔记,题解
CTYring
这个作者很懒,什么都没留下…
展开
-
zigzag算法
一个非常巧妙的数字压缩算法。原创 2022-08-30 20:42:29 · 1221 阅读 · 2 评论 -
蓝桥杯省赛真题异或数列
#include <iostream>#include <cstring>using namespace std;// 位数const int N = 30;// 记录每一位1出现的次数int num[N];int main(){ int T; cin >> T; while(T--){ // res为所有数异或的结果 int n, res = 0; cin >> n;原创 2022-03-08 09:24:54 · 293 阅读 · 1 评论 -
蓝桥杯2021年第十二届省赛真题-双向排序
#include <iostream>const int N = 100010;struct Pair{ int x, y;}pai[N]; // 操作栈using namespace std;int ans[N];int n, m;int main(){ cin >> n >> m; // 栈顶指针 int top = 0; while(m--){ int p, q; cin &原创 2022-03-05 17:51:12 · 608 阅读 · 0 评论 -
蓝桥杯2021年第十二届国赛真题-和与乘积
蓝桥杯2021年第十二届国赛真题-和与乘积原创 2022-03-04 12:55:13 · 1074 阅读 · 0 评论 -
李超线段树o( ̄ε ̄*)
一、知识点学习https://www.cnblogs.com/JHSeng/p/10896570.html二、题目笔记1、 [HEOI2013]Segment题目描述要求在平面直角坐标系下维护两个操作:在平面上加入一条线段。记第 i 条被插入的线段的标号为 i。给定一个数 k,询问与直线 x=k 相交的线段中,交点纵坐标最大的线段的编号。输入格式输出格式对于每次查询,输出一行一个整数,代表交点纵坐标最大的线段的编号。若不存在任何一条线段与查询直线有交,则输出 0;若有多条线段与查询原创 2021-10-09 12:08:46 · 166 阅读 · 0 评论 -
AC 自动机(ˉ﹃ˉ)
AC 自动机(ˉ﹃ˉ)其实学这么久字符串就是冲着这个算法在学,终于学到了一、模板1、【模板】AC自动机(简单版)题目背景警告:通过套取数据而直接“打表”过题者,是作弊行为,发现即棕名。这是一道简单的 AC 自动机模板题,用于检测正确性以及算法常数。题目描述给定 n 个模式串 si 和一个文本串 t,求有多少个不同的模式串在文本串里出现过。两个模式串不同当且仅当他们编号不同。输入格式第一行是一个整数,表示模式串的个数 n。第 2 到第 (n+1) 行,每行一个字符串,第 (i+1) 行原创 2021-08-11 14:58:35 · 398 阅读 · 0 评论 -
Trie树ヾ(=゚・゚=)ノ喵♪
Trie树ヾ(=゚・゚=)ノ喵♪一、想说的话感觉难度不是很大,两个操作,存和查。遍历操作会和图相结合,难度不大的时候用深搜比较多二、[TJOI2010]阅读理解题目描述英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。输入格式第一行为整数 N ,表示短文篇数,其中每篇短文只含空格和小写字母。按下来的 N 行,每行描述一篇短文。每行的开头是一个整数 L ,表示这篇短文由 L 个单词组成。接下来是 L 个原创 2021-08-04 10:26:38 · 218 阅读 · 0 评论 -
ST表ヾ(×× ) ツ
ST表ヾ(×× ) ツ一、ST表ST表示用来解决RMQ问题的一种算法,感觉解释起来还是比较复杂,有很多大佬写得都很好,大家可以找一下,我这里简单说一下。RMQ问题即区间最值问题,即我们要求任意区间范围内的最值,ST表的思想是,求出区间长度为 2^n(n >= 0)的区间内的最值,当我们要找某个区间的最值的时候,就用这些区间拼接起来表示比如说某个长度为3的区间的最值,就可以通过比较对应的两个长度为2且相交的区间的最值来得出。核心代码 for(int j=1;j<=LC;j++)原创 2021-08-02 14:15:24 · 209 阅读 · 0 评论 -
字符串(づ。◕‿‿◕。)づ进阶之章
字符串(づ。◕‿‿◕。)づ进阶之章一、[国家集训队]最长双回文串题目描述顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同)。输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1∣X∣,∣Y∣≥1)且X和Y都是回文串。输入格式一行由小写英文字母组成的字符串S。输出格式一行一个整数,表示最长双回文子串的长度。输入输出样例输入 #1baacaabbacabb输出 #112说原创 2021-07-28 11:20:23 · 241 阅读 · 0 评论 -
树状数组 (๑•́₃ •)
树状数组 (๑•́₃ •)一、想说的话我是学完st表之后学的树状数组,这个概念主要是在st表的基础上增加了动态查询,结合到了前缀和与差分的概念,用到了分块的思想,代码和思想都比较简洁。感觉树状数组最难的点是想到用这个,还是我太不熟练了。写完这些题之后总结一下,目前遇到的和数状数组相关的类型:动态求区间和区间加法(也是前缀和那种感觉)求逆序对求不同的数的个数还有上面的情况的扩展,感觉自己距离灵活运用树状数组还有很长的路要去努力二、【模板】树状数组 1题目描述如题,已知一个数列,你需要进原创 2021-07-25 13:30:20 · 259 阅读 · 0 评论 -
ヾ(o◕∀◕)ノヾ各种动态规划经典例题(状压DP,倍增DP)
ヾ(o◕∀◕)ノヾ各种动态规划经典例题(状压DP,倍增DP)一、yyy loves Maths VII题目背景yyy 对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为“厄运数字”。题目描述一群同学在和 yyy 玩一个游戏。每次,他们会给 yyy n 张卡片,卡片上有数字,所有的数字都是“幸运数字”,我们认为第 ii 张卡片上数字是 ai。每次 yyy 可以选择向前走 ai 步并且丢掉第 i 张卡片。当他手上没有卡片的时候他就赢了。但是呢,大家对“厄运原创 2021-07-11 11:59:05 · 193 阅读 · 0 评论 -
各种各样的搜索(⊙ ▽ ⊙)巩固提升之章
各种各样的搜索(⊙ ▽ ⊙)巩固提升之章蓝桥杯之前的一些小训练,主要是蓝题和紫题一、[NOI1999] 生日蛋糕题目描述7 月 17 日是 Mr.W 的生日,ACM-THU 为此要制作一个体积为 Nπ 的 M 层生日蛋糕,每层都是一个圆柱体。设从下往上数第 i(1≤i≤M)层蛋糕是半径为 Ri,高度为 Hi 的圆柱。当 i<M 时,要求 Ri>Ri+1 且 Hi>Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积 Q 最小。请编原创 2021-06-04 22:42:52 · 225 阅读 · 1 评论 -
图论 ~%?…,# *‘☆&℃$︿★?入门之章
图论 ~%?…,# *'☆&℃$︿★?入门之章一、图的遍历与存储1、[NOIP2015 提高组] 信息传递题目描述有 n 个同学(编号为 1 到 n )正在 玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信息传递对象(注意:可能有人可以从若干人那里获取信息, 但是每人只会把信息告诉一个人,即自己的信息传递对象)。当有人原创 2021-05-26 19:51:37 · 969 阅读 · 2 评论 -
字符串(づ。◕‿‿◕。)づ入门之章
字符串(づ。◕‿‿◕。)づ入门之章一、KMP算法久仰大名的算法O(∩_∩)O可以分为两个部分,一部分是创造部分匹配表,一部分是对比,可以理解为先和自己比再和别人比,因为篇幅关系这里就不展开去细讲KMP算法了,已经有很多大佬讲得很棒了。1、【模板】KMP字符串匹配题目描述给出两个字符串 s1 和 s2,若 s1 的区间 [l, r][l,r] 子串与 s2 完全相同,则称 s2 在 s1 中出现了,其出现位置为 l。现在请你求出 s2 在 s1 中所有出现的位置。定义一个字符串 s 的 bo原创 2021-04-11 12:26:32 · 379 阅读 · 0 评论 -
各种各样的搜索(⊙ ▽ ⊙)(3)剪枝之章
各种各样的搜索(⊙ ▽ ⊙)(3)剪枝之章剪枝主要指搜索过程的优化,其实很多内容都是之前我们写一些简单题的时候写过的,但这里很难想到用这些方法来优化,我们通过一些例题来提供一些优化的思路,这种类型的问题确实需要我们平时的积累。一、小木棍 [数据加强版]题目描述乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过5050。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。输入格式共二原创 2021-04-02 15:47:27 · 148 阅读 · 0 评论 -
线性代数 ̄O ̄)ノ矩阵之章
线性代数 ̄O ̄)ノ矩阵之章一、前言一直感觉自己数论很拉胯,但没时间补,现在开学又发现线代自己学得也一般,所以希望通过这个题单来提高自己数论的能力和线代的能力,争取考高一些ヾ(・ω・`。)二、模板1:矩阵快速幂题目背景矩阵快速幂题目描述给定 n×n 的矩阵 A,求Ak。输入格式第一行两个整数 n,k 接下来 n 行,每行 n 个整数,第 ii 行的第 j 的数表示 Ai,j。输出格式输出Ak共 n 行,每行 n 个数,第 i 行第 j 个数表示 i,j,每个元素对 10^9+7 取模。原创 2021-03-28 16:33:52 · 285 阅读 · 0 评论 -
各种各样的搜索(⊙ ▽ ⊙)(2)记忆化搜索之章
各种各样的搜索(⊙ ▽ ⊙)(2)记忆化搜索之章前言这周在忙答辩,都没怎么刷题┭┮﹏┭┮这是答辩的两个小游戏(其实有一些bug ヾ(゚∀゚ゞ)但我懒得改了)跳一跳疯狂弹球后面有时间的话我再补充一些1、[NOIP2010 提高组] 引水入城题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个N 行×M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市原创 2021-03-07 11:55:04 · 164 阅读 · 0 评论 -
各种各样的搜索(⊙ ▽ ⊙)(1)
各种各样的搜索(⊙ ▽ ⊙)(1)1、[USACO1.5]八皇后 Checker Challenge题目描述一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 2 4 6 1 3 5 来描述,第 i 个数字表示在第 i 行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号 2 4 6 1 3 5这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。并把它们以上面原创 2021-02-28 19:08:02 · 494 阅读 · 0 评论 -
前缀和 & 差分ヽ(°◇° )ノ
前缀和 & 差分ヽ(°◇° )ノ一、前言前缀和是一种非常重要的预处理,能大大降低查询的复杂度,在我们需要查询区间和的时候非常好用,差分是一种和前缀和相对的策略。二、go go go1、[USACO16JAN]Subsequences Summing to Sevens S题目描述Farmer John’s N cows are standing in a row, as they have a tendency to do from time to time. Each cow is l原创 2021-02-07 08:51:46 · 146 阅读 · 0 评论 -
ヾ(o◕∀◕)ノヾ各种动态规划经典例题(新手向、多类型)
ヾ(o◕∀◕)ノヾ各种动态规划经典例题(新手向、多类型)一、前言ヾ(・ω・`。)我把比较常见的类型的动态规划找了一些经典的例题,适合作为新手的入门例题,用于帮助我们对各种不同的动态规划有所了解,很多题也可以当做模板。内容比较多,可以先一键三连然后慢慢看(ಡωಡ)hiaia因为笔者也是萌新蒟蒻,所以如果哪里解释的不清楚或者大佬看出来哪里有问题的话请多多评论,蟹蟹٩(‘ω’)و二、线性dp线性dp往往比较容易就能找到状态转移方程,逻辑上也比较清楚,感觉和递推有点像。我们来看看题1、守望者逃离题目描述原创 2021-01-31 09:11:59 · 998 阅读 · 0 评论 -
数据结构之二叉树ヾ(Ő∀Ő๑)ノ
数据结构之二叉树ヾ(Ő∀Ő๑)ノ一、前言在寒假期间我会持续发一些不同知识点相关的题,意在通过这种方式让自己保持学习,也为各位同学提供一些我自己做题时的思路。考虑到知识点在网上还是比较好查找的,也有很多老师讲得很棒,所以我会更关注对于知识点的锻炼和理解,不会去讲解知识点。另外,我讲解的内容大多是我自己做题时的想法,也许有些地方对知识点理解的有问题,为防止误导其他人,如果有同学发现我有的地方说的不清楚或者有错误的话,请评论区指出,万分感谢!!☆⌒(*^-゜)v二、go go go1、淘汰赛题目描述有原创 2021-01-10 09:43:35 · 1441 阅读 · 0 评论 -
并查集算法ヽ(=^・ω・^=)丿
并查集算法ヽ(=・ω・=)丿一、前言 这星期在翻题单,偶然看到了并查集,我之前新生赛被这个东西卡了一手┭┮﹏┭┮,所以就很想弄明白,所以这周就是并查集了。然后并查集可能相对于新手来说不是特别常见的概念,所以这里大概解释一下二、什么是并查集 一 一+ 并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复原创 2021-01-17 09:42:35 · 789 阅读 · 1 评论 -
熄灯问题
1、问题描述2、思路分析 解题的方法是枚举,即尝试所有的可能情况然后输出正确的情况,但是在这道题当中情况比较多,难以全部遍历,所以需要化简,寻找能够确定全局状态的局部。 在这道题当中,所谓的局部就是第一行灯按下的全部方案,因为一旦第一行灯的情况确定,为了使第一行的灯全部熄灭,第二行灯的状态就是唯一的,以此类推,全局的情况都是唯一的。通过遍历局部来确定方案,要遍历的情况大大减少(枚举第一列能使要遍历的情况再度减少)3、代码实现(1)自定义函数①获取对应位置灯的状态//获取c中第i个灯的原创 2020-10-28 09:31:42 · 738 阅读 · 0 评论