摘要: \(\texttt{2024.8.4-2024.8.17 桐柏集训}\) 时间 内容 个人想法 Day1 计算机程序的构造与解释; 递归问题简介 好久没写代码了,第一天找找手感 Day2 贪心算法; 前缀和与差分; 分治算法; 突然发现自己连贪心都不会写了,感觉自己好菜 Day3 DFS & BFS 阅读全文
posted @ 2024-10-03 00:01 To_Carpe_Diem 阅读(0) 评论(0) 推荐(0) 编辑
摘要: 字符串Hash 定义 就是类似于 \(\text{map}\) 的一种映射关系吧,一个字符串对应一个整数值,通过整数值的异同来判断字符串的异同。那么如何去计算呢? P3370 【模板】字符串哈希 单哈希法 我们可以对于一个字符串$ ( s = s_1, s_2, s_3, \ldots, s_n ) 阅读全文
posted @ 2024-08-17 09:28 To_Carpe_Diem 阅读(17) 评论(0) 推荐(2) 编辑
摘要: DP问题 定义 什么是 \(DP\),答曰:一种通过将全局问题分解成不同的子问题来进行对复杂问题的计算。 在我看来就是一种递推的 \(ProMax\) 版,依旧是用之前计算过的来推出现在要计算的。 DP板子问题 P1115 最大子段和 思路 我们用 \(dp\) 数组来定义到 \(i\) 为止,最大 阅读全文
posted @ 2024-08-14 23:06 To_Carpe_Diem 阅读(12) 评论(0) 推荐(1) 编辑
摘要: 最小生成树 定义 什么是最小生成树呢? 好问题,通俗来说就是给你一个图( \(n\) 个节点),让你选 \(n-1\) 条边使其保持连通,但是又要保证所选的边的和最小。 P3366 【模板】最小生成树 思路(Kruskal) 我们应该怎么实现呢,不妨将要选的边排个序,从小到大选,诶,好想法,这也是一 阅读全文
posted @ 2024-08-12 22:34 To_Carpe_Diem 阅读(19) 评论(3) 推荐(2) 编辑
摘要: 离散化 定义 离散化本质是一种哈希,是一种用来处理数据的方法。 1.创建原数组的副本。 2.将副本中的值从小到大排序。 3.将排序好的副本去重。 4.查找原数组的每一个元素在副本中的位置,位置即为排名,将其作为离散化后的值。 B3694 数列离散化 代码 #include<iostream> #in 阅读全文
posted @ 2024-08-12 22:26 To_Carpe_Diem 阅读(25) 评论(4) 推荐(1) 编辑
摘要: 单调栈 定义 单调栈,就是一个栈,不过栈内元素保证单调性。即,栈内元素要么从小到大,要么从大到小。 而单调栈维护的就是一个数前/后第一个大于/小于他的数。 直接看模板题。 P5788 【模板】单调栈 思路 首先 \(f(i)\) 表示的是从 \(i\) 之后第一个大于 \(a_i\) 的元素的下标。 阅读全文
posted @ 2024-08-11 22:20 To_Carpe_Diem 阅读(11) 评论(2) 推荐(1) 编辑
摘要: 最短路问题 单源最短路 全源最短路 Floyd算法 通过转移方程判断 i -> j 的路径中,是否有 i -> k -> j 更短,运用简单 dp 来转移状态。 f[i][j] 表示 i -> j 的最短路径长度。 但不要忘了初始化,一个点到其本身的最短路径为 1,即 f[i][i] = 1,其余的 阅读全文
posted @ 2024-08-11 17:54 To_Carpe_Diem 阅读(25) 评论(3) 推荐(2) 编辑
摘要: 图的基本操作 图的存储 1.邻接矩阵 //对于一个正常的边 (u,v,w) vector<int> a[MAXN]; a[u].push_back(v); a[v].push_back(u); 2.链式前向星 //对于一个正常的边 (u,v,w) struct node{ int to,next,l 阅读全文
posted @ 2024-08-11 17:32 To_Carpe_Diem 阅读(12) 评论(3) 推荐(1) 编辑
摘要: 深度优先搜索 定义 简单来说就是,一条路走到死,不行的话就回溯,继续一条路走到死,直到抵达目标点。 习题 P2052 [NOI2011] 道路修建 思路 首先,看题目对于花费的定义,道路的长度*道路两端国家数的差值的绝对值,观察一下这个应该怎么计算,我们很明显能想到树子树大小,于是我们只要知道其中一 阅读全文
posted @ 2024-08-06 21:48 To_Carpe_Diem 阅读(11) 评论(2) 推荐(1) 编辑
摘要: 贪心问题 定义 顾名思义,越贪越好。。。 习题 P1094 [NOIP2007 普及组] 纪念品分组 思路 简单来说:最少的+最多的,利用双指针。 代码 #include<algorithm> #include<iostream> using namespace std; int w,n; int 阅读全文
posted @ 2024-08-05 18:08 To_Carpe_Diem 阅读(14) 评论(2) 推荐(1) 编辑