Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

我之前一直记的迪杰斯特拉的翻译导致我把 dijkstra 写成了 dijstra 或者 dijskra…… 我以后叫她迪杰克斯歘! dijkstra 是用来在有向图或者无向图中寻找任意两个点的最小距离的算法。但是无法处理带负环的图和求最长路。 dijkstra 的核心思想是由已找到的最短路的点集每次扩展一个点的最短路。 dis 数组代表由起点到其他点的最短路,初始化其为 \(I...

Guass消元 约旦·高斯消元法 求线性方程组 我们用一个\(n*(n+1)\)的矩阵存储线性方程组各项系数和零次项系数。 每一次找到一个未知数系数最大的方程,交换当前行方程和该方程,并将其他行该未知数的系数化为零。 重复n次即可。 最后第\(a[i][i]\)个数就是第i个未知数的系数,\(a[i][n+1]\)是等式右侧的数,用后者除以前者即可。 当化第i个方程时...

LCT维护一个森林,即把每个节点用splay维护,可以进行许多操作: 查询、修改链上的信息 随意指定原树的根(即换根) 动态连边、删边 合并两棵树、分离一棵树 动态维护连通性 等 主要性质 每一个Splay维护的是一条从上到下按在原树中深度严格递增的路径,且中序遍历Splay得到的每个点的深度序列严格递增。 每个节点仅包含于一个splay中。 边分为实边和虚边...

KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法。 问题:求 a 字符串与 b 字符串中子串相同的串首位置。 暴力就不说了,设 a 长 \(m\),b 长 \(n\),每次枚举比对每个字符,复杂度 \(O(nm)\)。 KMP 主要思想:如果一个字符串的子...

P1040 加分二叉树 \(n\) 很小,可以树形 dp 或者区间 dp 。 设 f[i][j] 为从 \(i\) 到 \(j\) 的最大加分值,则有 f[i][j]=max(f[i][k-1]*f[k+1][j]+f[k][k])。 有一个小技巧,将 f[i][i-1] 全部设置为 1,这样的话搜索到叶子就也可以按照通式 dp 了。 对于输出前序遍历(根,左树,右树)我们再...

P1447能量采集 定义:(i,j)表示处于(i,j)的植物的贡献 我们发现,点(i,j)与(0,0)的连线所过整点的数目为\(\gcd(i,j)\) 发现要是想记录每个点的答案并不好算。那么怎么好算呢? 我们来找一找同一直线上的所有点答案的和的关系。先不考虑答案只考虑个数。发现,寻找一个点及其倍数的个数的和更加好算。而且,因为有n和m的限制,那么向下取整的答案一定就是其本身...

P1880 [NOI1995] 石子合并 一道区间dp题目。 用 d[i][j] 表示从 i 到 j 的最大/最小得分,那么依次枚举长度 len,坐标 i 和 j,三层循环就可以 dp递推求得最值了。 (如果没有环的话) 不要着急,我们将序列复制一遍接到后面做一遍即可。 12345678910111213141516171819202122232425262728293031...

莫队算法的待修版本,增加一个时间的维度进行分块。 P1903 [国家集训队] 数颜色 / 维护队列 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757...

洛谷P2014选课 一道树形DP题。 f[i][j] 表示i个点选j门课程的最大学分。 递推方程: 1234for(int a=n;a>0;a--)//总共选择多少 for(int b=0;b<a;b++)//分别选择多少(b,a-b) f[x][a]=max(f[x][a],f[x][a-b]+f[u][b]);//都不遍历0的原因是f[i][0]无...

P1414 又是毕业季II 数论题,主要在于推演。 洛谷的《又是毕业季I》更好玩 发现对于所有的同学的能力值,只要我们选出每个数的所有因子并记录所有同学所有因子出现的次数,就可以得到一个 \(c\) 数组为所有因子出现的次数。 因为让输出 \(1\sim n\) 所有的值,而且因子数 c[k-1]>=c[k],我们就一定可以从因子数最高的 \(c\) 向下遍历到 c[i...