随笔分类 - 洛谷
洛谷中出现的知识总结、题解等
摘要:分层图最短路 P4568 [JLOI2011]飞行路线 一、分层图概念 分层图最短路 :在可以进行分层图的图上解决最短路问题 分层图:理解为有 多个平行的图 模型:在一个正常的图上可以进行 $k$ 次决策,对于每次决策,不影响图的结构,只影响目前的 状态 或 代价。一般将 决策前的状态 和 决策后的
阅读全文
摘要:##$P5357$ 【模板】$AC$ 自动机(二次加强版) 一、题目描述 给你一个文本串 $S$ 和 $n$ 个模式串 $T_{1 \sim n}$,请你分别求出每个模式串 $T_i$在 $S$ 中出现的次数。 二、对加强版进行改造 因为是什么二次加强版,所以大家先去做一下 加强版 吧,做法差不多
阅读全文
摘要:##$P3796$ 【模板】$AC$自动机(加强版) 作为模板$2$,这道题的解法也是十分的经典。 我们先来分析一下题目:输入和模板$1$一样 对比简单版 $P3808$ 【模板】$AC$自动机(简单版) 给定 $n$ 个模式串 $s_i$ 和一个文本串 $t$,求有多少个不同的模式串在文本串里出现
阅读全文
摘要:##$P3808$ 【模板】$AC$ 自动机(简单版) AC自动机详细讲解 $AC$自动机真是个好东西!之前学$KMP$被$Next$指针搞晕了,所以咕了许久都不敢开$AC$自动机,近期学完之后,发现$AC$自动机并不是很难,特别是对于$KMP$,个人感觉$AC$自动机比$KMP$要好理解一些,可
阅读全文
摘要:#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> using namespace std; typedef long long LL; const int N
阅读全文
摘要:裴蜀定理(贝祖定理) 定理 对任何整数 $a、b$ 和 $m$,关于未知数 $x$和 $y$ 的线性丢番图方程(称为裴蜀等式): $$\LARGE ax+by=m$$ 有整数解时当且仅当 $m$是$a$及$b$的最大公约数$d=gcd(a,b)$的倍数。 裴蜀等式有解时必然有无穷多个整数解,每组解$
阅读全文
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; const int N = 2000010; typedef long long LL; LL s[N]; int main() { LL n; cin >> n; //预处理前缀和 for (i
阅读全文
摘要:题目传送门 一、暴力法 \(5\) 个测试点,全部$TLE$ #include <bits/stdc++.h> using namespace std; const int N = 200010; const int INF = 0x3f3f3f3f; int res = -INF; int a[N
阅读全文
摘要:题目传送门I 题目传送门II 一、差分约束 这题很有意思,看了下题,感觉得用前缀和,然后似乎就是: 我们用$sum[i]$表示前$i$个月的总利润 如果从第$x$月到第$y$月的利润是$z$($z$可正可负) 可以得到:\(sum[y] - sum[x-1] = z\)(可以理解为前缀和差值) 相当
阅读全文
摘要:题目传送门 一、图的存储方式总结 存图可以三种办法: (1)点到点:邻接矩阵 (2)点+点的出边:邻接表 (3)只保存边:$Edge$结构体 适合场景: 邻接矩阵 (1)要判断任意两顶点是否有边无边就很容易了; (2)要知道某个顶点的度,其实就是这个顶点$v_i$在邻接矩阵中第$i$行或(第$i$列
阅读全文
摘要:题目传送门 实现代码 #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 10, M = 2 * N; int dfn[N], low[N]; int n, m; int timestamp, root; int stk
阅读全文
摘要:题目传送门 知识点 无向图边双连通分量模板 $vector+PII$的自定义排序 #include <bits/stdc++.h> using namespace std; const int N = 5010, M = 20010; typedef pair<int, int> PII; int
阅读全文
摘要:## [$P3379$ 【模板】最近公共祖先($LCA$)](https://www.luogu.com.cn/problem/P3379) #### $LCA$常见的四种求法 \\ F(n-1) \end{bmatrix} =\begin{bmatrix} F(n-1)+F(n-2)\\ F(n-1) \end{bmatrix}=\begin{bmatrix} F(n-1) * 1 + F(n-2)*
阅读全文
摘要:\(P1939\) 【模板】矩阵加速(数列) 一、题目描述 二、解题思路 从题目上来看,知道需要递推求公式,但$n<=2e9$,我们知道简单递推肯定要挂掉。 所以想到需要一个$O(NlogN)$的算法,递推求式子,线性的还不行,联想到矩阵快速幂。 $$\large \beginf_ & f_ & f
阅读全文
摘要:$P3390$ 【模板】矩阵快速幂 题目传送门 一、矩阵乘法介绍 有两个矩阵:$A$和$B$(矩阵实际上就是二维数组) $A$矩阵和$B$矩阵可以做乘法运算必须满足$A$矩阵的列的数量等于$B$矩阵的行的数量 运算规则:$A$的每一行中的数字对应乘以$B$的每一列的数字把结果相加起来 二、矩阵乘法模
阅读全文
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; int main() { int m, t, s; cin >> m >> t >> s; if(t==0) { printf("0"); return 0; } int x = ceil(1.0
阅读全文
摘要:题目传送门 #include <bits/stdc++.h> using namespace std; int main() { int a, b; cin >> a >> b; int c = 19; int d = a * 10 + b; int e = d / c; cout << e <<
阅读全文
摘要:题目传送门 $n$边形对角线个数 公式:\(n(n-3)/2\) $n$边形对角线交点个数公式 : \(C_n^4\) 理由: 首先由于不会有三条对角线交于一点,所以过某一个交点有且只能有$2$条对角线。 而这两条对角线实质上是确定了$4$个顶点(也可以看做是一个四边形的两条对角线交于一点,求四边形
阅读全文