随笔分类 - 笔记
摘要:Index 链形均分纸牌 每次仅可交换\(1\)张 每次可交换多张 环形均分纸牌 每次仅可交换\(1\)张 每次可交换多张 拓展性很强的贪心问题。或许能推广到树之类的结构上,或者拓展到方案计数问题之类,不过目前还没想好啦。 链形均分纸牌 每次仅可交换\(1\)张 最基础的例题是这样的: 有\(n\)
阅读全文
摘要:求\(s\)到\(t\)必须经过某个点/某条边的最短路 这个相当板子了,点\(u\)的答案是\(dis(s,u)+dis(u,t)\),边\(e=(u,v)\)的答案是\(\min(dis(s,u)+dis(v,t),dis(s,v)+dis(u,t))+w(e)\)。其中\(dis(u,v)\)表
阅读全文
摘要:P1776 宝物筛选 朴素多重背包 for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ for(int k=1;k*w[i]<=m&&k<=cnt[i];k++){ f[i][j]=f[i-1][j]; if(j>=w[i]) f[i][j]=max(f[i]
阅读全文
摘要:最近做了一些题,感觉对算法更深刻的理解是比套板子更深层次的,在这个层次上解决问题,思路会更加清晰。比如P5687 [CSP-S2019 江西] 网格图(题解)这道题就是网格图的最小生成树,解法就建立在普通Kruskal的基础上,当时想了挺久也没想出来,看了题解才豁然开朗。所以各算法总是要回顾回顾的~
阅读全文
摘要:
对于长度为\(n\)的字符串\(S\),定义\(z[i]\)表示\(S\)本身和\(S[i,n]\)这个后缀的最长公共前缀(LCP)的长度,(特别地,\(z[1]\)可以记为\(0\)或\(n\))则\(z\)被称为\(S\)的Z函数。 扩展KMP算法可以在\(O(n)\)的时间复杂度内求得\(S\
阅读全文
![[笔记]Z函数(扩展KMP)](https://img2024.cnblogs.com/blog/3322276/202410/3322276-20241024204439740-368987585.png)
摘要:
定义 DFS树相关 我们对一个有向连通图进行DFS遍历,会得到一棵DFS树。 DFS树的形态是根据我们DFS的顺序来决定的,因此对一个有向连通图来说,它的DFS树可能有多个。我们把这棵树的边称作树边。 其他边我们分为\(3\)类: 前向边:从\(u\)到它dfs树上的祖先的边。 后向边:从\(u\)
阅读全文
![[笔记]Tarjan算法](https://img2024.cnblogs.com/blog/3322276/202408/3322276-20240829102213038-2055267468.png)
摘要:
复习内容部分来自NOI大纲中入门级和提高级的内容。 联合体(Union) 联合体是一种复合数据类型,其的定义上与结构体的定义类似。 与结构体不同,联合体中的所有元素共用一块内存,所以它占空间大小一般是最大成员的大小(不考虑对齐的情况下),相应地,任意时刻只有一个成员带有值,如果访问其他成员,得到的值
阅读全文
![[笔记]CSP-S 2024 第一轮 查漏补缺](https://img2024.cnblogs.com/blog/3322276/202408/3322276-20240824182016503-1038689104.png)
摘要:
CF1200E Compress Words ~ 洛谷 给定\(n\)个字符串,请按下面的规则,从左往右依次合并\(n\)个字符串,成为\(1\)个字符串: 将\(A,B\)合并,就是找到最大的\(i\),使得\(A\)的长为\(i\)的后缀和\(B\)的长为\(i\)的前缀相等,删除\(A\)的这
阅读全文
![[笔记]KMP算法 - 下(例题)](https://img2024.cnblogs.com/blog/3322276/202408/3322276-20240802211025574-2073158668.png)
摘要:
算法详解 KMP 是一种字符串匹配算法,可以在线性的时间复杂度内解决字符串的“模式定位”问题,即: 在字符串 \(A\) 中查找字符串 \(B\) 出现的所有位置。 我们称 \(A\) 为主串,\(B\) 为模式串。下文都用 \(n\) 表示 \(A\) 的长度,\(m\) 表示 \(B\) 的长度
阅读全文
![[笔记]KMP算法 - 上(算法详解)](https://img2024.cnblogs.com/blog/3322276/202408/3322276-20240801223628730-65822686.png)
摘要:
定义 把一个字符串映射到一个整数的函数称作哈希函数,映射到的这个整数就是这个字符串的哈希值。 需要注意的一点是,哈希是将大空间上的东西(字符串有无穷多个)映射到了小空间(一定范围内的整数),所以注定了它一定会存在冲突,即若干个不同的字符串映射到了相同的哈希值,我们将这种冲突称作“哈希碰撞”。也就是说
阅读全文
![[笔记]字符串哈希](https://img2024.cnblogs.com/blog/3322276/202407/3322276-20240729152850260-1525905287.png)
摘要:
于 2024/11/25 修改分类 题解 \(\Longrightarrow\) 笔记。 P1452 【模板】旋转卡壳 | [USACO03FALL] Beauty Contest G 旋转卡壳模板题。凸包用的是Andrew算法,就不详述了,具体可以查查资料了解,但提一嘴Andrew算法的一些细节问
阅读全文
![[笔记]旋转卡壳](https://img2024.cnblogs.com/blog/3322276/202407/3322276-20240720190139956-851356853.png)
摘要:
模板题:P3803 【模板】多项式乘法(FFT) 快速傅里叶变换(Fast Fourier Transform,FFT)在算法竞赛中主要用于求卷积,或者说多项式乘法。如果我们枚举两数的各系数相乘,时间复杂度是\(O(n^2)\),而FFT可以将这一过程优化到\(O(n\log n)\)。 流程 整个
阅读全文
![[笔记]快速傅里叶变换(FFT)](https://img2024.cnblogs.com/blog/3322276/202407/3322276-20240715213847809-1601601032.png)
摘要:
前置知识:树的左旋、右旋。 Splay树是一种平衡树。能够做到每个操作均摊\(O(\log N)\)。 前言 与上文AVL树不同之处在于,AVL树在任何操作结束后,都能保证每个节点的左右子树高度相差不超过\(1\)。相应地,每个操作都是严格的\(O(\log N)\)。而Splay树并没有对“平衡”
阅读全文
![[笔记]Splay树](https://img2024.cnblogs.com/blog/3322276/202406/3322276-20240619215742139-1976382973.png)
摘要:
对于一个有向无环图(DAG)的顶点按顺序排成一个序列的过程,就是拓扑排序(Topological Sort)。 具体来说,这个序列必须满足: 每个顶点正好出现\(1\)次。 如果图上存在一条\(A\to B\)的路径,那么\(A\)一定在\(B\)之前。 注意:拓扑排序结果可能不唯一。 注意与DFS
阅读全文
![[笔记]拓扑排序](https://img2024.cnblogs.com/blog/3322276/202405/3322276-20240509122838309-601584295.png)
摘要:
于 2024/11/25 修改分类 题解 \(\Longrightarrow\) 笔记。 P1757 通天之分组背包 分组背包模板题。 总共\(s\)组,每组最多取一个物品,实际上就是一个物品总数为\(s\)的背包。 for(int i=1;i<=s;i++){//枚举组 for(int j=1;j
阅读全文
![[笔记]分组背包](https://img2024.cnblogs.com/blog/3322276/202405/3322276-20240506213951873-2146722824.png)
摘要:
树形dp,是一种建立在树形结构上的dp,因此dfs一般是实现它的通用手段。 是一种很美的动态规划呢。 P1352 没有上司的舞会 P1352 没有上司的舞会。 在一棵树中,找到若干个互相独立(即互相没有边直接相连)的点,使它们的权值和最大。 我们发现,间隔选择的方法(只选深度为奇数/偶数的点)是不可
阅读全文
![[笔记]树形dp - 1/4(节点选择类)](https://img2024.cnblogs.com/blog/3322276/202411/3322276-20241101212914606-1946317839.png)
摘要:
一些题目在涉及到超大整数运算时,往往会要求我们把答案取模一个值,比如\(998244353\)、\(10^9+7\)等等。如果我们的计算只有\(+,-,*\),直接现算现取模即可: (a + b) % mod = (a % mod + b % mod) % mod (a - b) % mod = (
阅读全文
![[笔记]模意义下的乘法逆元](https://img2024.cnblogs.com/blog/3322276/202404/3322276-20240421140557626-1320554474.png)
摘要:
【接上回】-数位dp例题及详解-上 共\(4\)道难度较高、较有思考性的题。 附上数位dp题单:https://www.luogu.com.cn/training/494976#problems 小小的总述: 数位dp是这样的,状态表示越简洁,dp数组越小巧,进而时空消耗就越少。所以我们刷题的时候,
阅读全文
![[笔记]数位dp例题及详解-下](https://img2024.cnblogs.com/blog/3322276/202404/3322276-20240414115236601-435039391.png)
摘要:
I guess it's my fault because I was exhausted.
I thought I could still be of use.
Before ripping off, our compassion slip past each other and we say goodbye.
阅读全文
![[笔记]数位dp例题及详解-上](https://img2024.cnblogs.com/blog/3322276/202410/3322276-20241004171743811-1169613370.png)
摘要:
[Contents] 无环,朴素算法,\(O(n^3)\) 有环,朴素算法,\(O(n^3)\) GrsiaWachs、四边形不等式优化 无环,朴素算法,\(O(n^3)\) 例题:P1775 石子合并(弱化版) 用\(f[i][j]\)表示\(i\sim j\)的最小得分,枚举长度\(len=2\
阅读全文
![[笔记]石子合并问题整理(冬眠中)](https://img2024.cnblogs.com/blog/3322276/202404/3322276-20240403221117260-809269341.png)