摘要: 终于更新到5了,但是发现并不是做过的题仍然记得,所以现在应该着重记录一些相对简单且模板的题目了。 501. H - Clock HDU - 6551【环上点覆盖 问题】 题意:给你一个环[0,N-1],和一个起始点S,同时还有n个在环上的点,请你求出最短的时间从S出发,去覆盖这n个点。 解决这个环问 阅读全文
posted @ 2022-11-26 12:32 PigeonG 阅读(100) 评论(0) 推荐(0) 编辑
摘要: KMP算法 例题1:E. Martian Strings【前缀函数的运用】 这一题笨笨地写了个SA+二分,慢死了(常数大)。虽然这一题是多串匹配,但是\(m=100\),S串长度为\(1e5\),所以是可以暴力check每一个pattern的。。但是因为这一题要把一个串分成两个不相交的区间,所以考虑 阅读全文
posted @ 2022-08-13 23:45 PigeonG 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在namo-Camp里dls讲了一些Hash技巧,嘻嘻,记录一下。 零、Neal_Hash的模板 这是一个比较稳定的Hash模板,可以用于unordered_map,也可以当成随机数作映射(集合Hash有用)。 neal_hash struct custom_hash { static uint64 阅读全文
posted @ 2022-08-13 23:44 PigeonG 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 构建广义后缀自动姬 (1)伪做法:重置last法 - 也是一种在线做法,但是最坏情况下空间会比第三种构造法大一倍 每次插入一个字符串,插完一个字符串之后,重置last=1,然后继续插入下一个字符串,直到所有字符串插入完毕。 这个算法的时间复杂度俺不太会证明,但是平均复杂度是线性的。由于没有多余操作, 阅读全文
posted @ 2022-08-13 23:44 PigeonG 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 实现思路: 初始化i=0,j=1,k=0,即首先选择两个起始位置,然后比较这两个位置开始的字符串的字典序大小,k表示两个字符串前k个字母相同。 如果k+1个字母仍然相同,令k++; 否则,两个字符串已经比较出大小,大的那个应该被淘汰,但是我们已经比较了k位了,这些信息应该被派上用场。 因为我们已经比 阅读全文
posted @ 2022-08-13 23:44 PigeonG 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 什么是自动机(useless)? 对于自动机/状态图不理解感觉也问题不大,直接把SAM理解成一个有向无环图就行了。 常见的状态机的定义: 自动机 = 状态集合(state)+状态转移(trans)+初始状态(没有入度的点)+一些终止状态(没有入度的点)+输入字符集(输入信号) (1)确定性有限状态自 阅读全文
posted @ 2022-07-26 19:37 PigeonG 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 401. 不降子数组游戏【二分】 直接二分就行。因为getAns函数写错了,wa了几发。(当nxt[l]>r的时候,这个时候就是递增子数组,就是数组长度的组合数) 402. 子串(数据加强版)【组合数】 一开始想到了从两边遍历,然后把1单独拎出来,后面没想到切入口。 然后看到严gg的文章,同一段0的 阅读全文
posted @ 2022-07-06 01:19 PigeonG 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 前言:最小树形图实在是一道比较模板的题目,而且一般不常见,其本质是贪心算法。 小问题:在引出有向有环图的最小树形图算法前,我们先来考虑一个问题,对于有向无环图我们要怎么求它的最小树形图呢? 因为图上是没有环的,所以我们直接对于每个点(非根节点)求出它的最小入边即可。 而且因为是无环,所以根节点必须只 阅读全文
posted @ 2022-05-19 14:06 PigeonG 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 二分图: 题库一【转载】 定义:二分图是一个无向图,而且这个图的所有点可以被分成V,U两组,这个图的所有边都有这样的性质:边的两个端点分别属于点集(U,V)中的一个/即点集不相同。 性质 :①如果二分图有环,那么环的长度一定是偶数 / 0(无环时). 证明看:二分图 ②每个点集中,点与点之间不存在边 阅读全文
posted @ 2022-04-10 20:45 PigeonG 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 此文为笔记,用于自我反思。 学好DP很难捏,有些DP里面嵌套了数学、有时候又需要使用数据结构维护,有时候需要用到图论的相关知识。好难啊。 决定了,我要存下比较模板的DP题,记住他,理解他。 一、数据结构维护DP 1. div1-D Serious Business 【补题记录】 题意:一个矩阵有3行 阅读全文
posted @ 2022-03-07 19:33 PigeonG 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 由于本人经常被二分与三分的各种细节卡死,所以记录一下。 二分如果出错了,注意查看二分的初始范围、二分的判断条件、L/R的赋值、最终二分得到的结果等。有时候二分错误并不是因为二分细节问题,而是题目存在边界,需要特判。 二分: 目前常用的二分有3种写法,区别在于:①闭区间或左闭右开区间 ②退出条件时l= 阅读全文
posted @ 2022-02-21 20:21 PigeonG 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 四边形不等式是一种动态规划的优化方法,通常利用其来证明决策单调性,以优化动态规划的时间复杂度(减少枚举决策点的时间从而降一个时间维度)。 一,四边形不等式: 前置说明:\(w(l, r)\)是区间\([l,r]\)上的权值函数,可以理解为dp转移边上的边权,即转移一步的花费。 定义: (1)区间包含 阅读全文
posted @ 2022-02-18 15:42 PigeonG 阅读(547) 评论(0) 推荐(2) 编辑
摘要: 【欧拉图 - OI Wiki (oi-wiki.org)】 【Problem - 527E - Codeforces】 平面图判定【P3209 [HNOI2010] 平面图判定 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)】 图的联通系数【P5227 [AHOI2013]连通图 阅读全文
posted @ 2022-02-12 17:41 PigeonG 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 细节: (1)多组数据记得添加init函数,并且init函数里面设置tot=-1,同时memset(tr[0] , 0) 。 (2)预处理last指针的时候,应该注意,v指向的是fail[v],与x没有任何关系。即【last[v] = ed[fail[v]]?fail[v]:last[fail[v] 阅读全文
posted @ 2022-02-12 14:07 PigeonG 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 前言:开始学习SA啦!忘记SA啦!开始复习SA啦!每次比赛之前都建议把基础概念、常见性质过一遍呢。 后缀数组知识点: SA数组: sa[i]表示排第i的后缀id(后缀id指后缀开始的位置)。 Rank数组: rk[i]表示从i开始的后缀的rank rk和sa具有特点:sa[rk[i]]=i; rk[ 阅读全文
posted @ 2022-02-11 18:38 PigeonG 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 习题201~300: 需要查询题目的请按 Ctrl-F。 Neal's Blog introduce an useful hash function to me, I show it to you here. 【dq被卡常后的推荐!】 struct custom_hash { static uint 阅读全文
posted @ 2021-12-23 16:58 PigeonG 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 习题101~200: 需要查询题目的请按 Ctrl-F。 101:丑数筛+较大项数斐波那契数(云哥教你学数学)【牛客】 (1)先用丑数筛筛出丑数【ll要换成__int128_t】 丑数筛一定要注意去重,不然可能一个数会出现2次以上。 ll uNum[maxn]; inline void initUg 阅读全文
posted @ 2021-09-17 17:25 PigeonG 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 带花树 顾名思义,带花树是一种自带花朵的树(x) 带花树其实并不是什么数据结构 ,它是一种以图为基础的 【匹配】 算法,常见于一般图匹配。 生活中的匹配问题最常见是二分图匹配 ,一些匹配 也可以贪心 / DP 完成 ,但是遇到一般图,就很难跑出正确的匹配结果并输出了。 介绍算法、讲解算法,我觉得各位 阅读全文
posted @ 2021-01-29 16:14 PigeonG 阅读(344) 评论(0) 推荐(1) 编辑
摘要: 收录了部分有趣的题目: 【一句话,干就是了!】 目前学习进度:图论→匹配问题→背包/区间/状压DP→数论 字符串: 题目一 : 2008年老题,但是网上没有题解【 vjudge 可以看 sourse code 】,最后被bs学长搞了。(第一次接触01BFS。 暴力枚举: 题目二 : ①思路问题:因为 阅读全文
posted @ 2021-01-21 15:05 PigeonG 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 单调队列优化多重背包 背包问题: 01,完全比较简单,套个板子就好,需要注意的是: const int maxn = 2e4+11;//由于maxn是由max(n,m)决定的,当背包的体积过大时,我们就不能再使用体积来定义状态了 来一道例题:https://ac.nowcoder.com/acm/p 阅读全文
posted @ 2021-01-18 21:49 PigeonG 阅读(114) 评论(0) 推荐(0) 编辑