KMP&Trie树学习笔记
KMP // s[]是长文本,p[]是模式串,n是s的长度,m是p的长度 //求模式串的next数组(双指针算法): //next数组为模式串的子串中前缀和后缀相同的最大长度,即若有不匹配的情况时可以让模式串往后移动的最少次数 for (int i = 2, j = 0; i <= m; i ++ ) { while (j &&…
Acwing2021寒假每日一题题解及学习笔记
做了这两道题感觉对二分的理解又更加深刻了一些。下面两个题都可以看作 最优化 问题。 第一题是看给定需求的绳子段数,看切成这么多段 最长 能切多少。 第二题可以看成给定一个数,求哪个数的三次方 最接近 它。 那么我们可以将其转化为一个 判断问题。即第一题转化为,给定一个长度,看它能够切割的段数 是否 能够达到题目要求的段数。第二题则为,给定一个数,看…
Typecho博客搭建教程
typecho相对于WordPress更轻巧一些,之前在这个平台折腾了不少,这篇搭建的文章还保留着,这里发出来分享一些搭建时的经验心得。 typecho官网:http://typecho.org/ 注意从这里开始,你得到的所有用户名和密码都要分门别类地保存好!!!一定要保存好!! 云服务器获取 阿里云服务器体验链接 注意这里的服务器系统选择Cent…
链表&栈&队列习题总结(下)
Acwing829 模拟队列 #include <iostream> #include <string> using namespace std; const int maxn = 1e5+10; //模拟下标从0开始的队列 int q[maxn], hh, tt = -1; int main(void) { int m; …
链表&栈&队列习题总结(上)
Acwing826 单链表 #include <iostream> #include <algorithm> using namespace std; const int maxn = 1e5+10; //idx充当题目中k的作用,但是注意是idx从0开始,而k从1开始,所以对应的用到k的地方需要减一 int head, e…
链表&栈&队列学习笔记(下)
队列 // hh 表示队头,tt表示队尾。注意,这里的队列起始坐标是从0开始的 int q[N], hh = 0, tt = -1; // 向队尾插入一个数 q[ ++ tt] = x; // 从队头弹出一个数 hh ++ ; // 队头的值 q[hh]; // 判断队列是否为空 if (hh <= tt) {is not empty} 循环…
链表&栈&队列学习笔记(上)
由于C++中new操作比较耗时间,所以在算法竞赛中,常用数组来模拟链表。栈和队列也常用数组来模拟。 当然,在模拟之前,需要搞清楚这几种基本数据结构的特点。数组模拟还能够实现一些原来的数据结构实现起来不那么方便的操作,比如队列,用数组模拟的话,队头队尾的元素都能查看。 但是需要注意,数组模拟时,在有些步骤中也是不能更换操作顺序的,比如链表的删除和插入…
如何快速入门(竞赛)算法
前言 对没错,这篇文章是来推荐课程的,但绝对不是那种培训机构动辄上万学费的天价课! 今天要向大家推荐的,是我自己最近上了一段时间的课程。在入门算法竞赛的时候,我曾经试图硬啃紫书《算法竞赛入门经典》。可惜我的并不是“有天赋的零基础选手”,啃了前几章实在是啃不动了,于是以失败而告终。后来也试着找了几个算法基础课,有的太贵,有的个人感觉讲课风格不太适合自…
离散化&区间合并习题总结
习题总结4 Acwing802 区间和 #include <iostream> #include <vector> #include <algorithm> using namespace std; /*数组大小为3e5的原因 需要离散化的数据个数不超过1e5个,而且中,不仅需要操作的位置需要映射 询问时的区间边…