11 2022 档案
摘要:[USACO07MAR]Face The Right Way G $N$ 头牛排成一列 $1 \le N \le 5000$。每头牛或者向前或者向后。为了让所有牛都面向前方,农夫每次可以将 $K$ 头连续的牛转向 $1 \le K \le N$,求使操作次数最小的相应 $K$ 和最小的操作次数 $M
阅读全文
摘要:这两个算法都是求最小生成树的算法,这里有个模板题 P3366 【模板】最小生成树 Kruskal算法与Prim算法相比比较好理解,基于贪心的思想,每次选取不会产生圈(重边)的权值最小的边,直到所有顶点连通。 Kruskal 具体做法: 将所有顶点看成一个独立的集合 将边按权值从小到大进行排序 利用并
阅读全文
摘要:P5788 【模板】单调栈 入栈时候判定,如果不符合栈内的规则,则让栈顶的元素出栈。 void solve() { stack<int> sc; ufr(i, 1, n) { if (sc.empty()) { sc.emplace(i); continue; } while (!sc.empty(
阅读全文
摘要:如上图 根节点什么都不存 其余结点存各自对应的一个字符 从根节点往下遍历,遍历的字符组成了存储的字符串 建树 $next[i][c]$表示字符串与之对应的($s[j]=c$)下一个字符($s[j+1]$)存储的位置,idx用来给新的字符开辟新的空间 int next[MAX_N * 50][26],
阅读全文
摘要:链式前向星 一种存储图的数据结构 建立一个结构体和一个数组加一个变量,这里的to代表边$(u,v)$中的$v$结点,而$edge$数组的索引$idx$代表$u$,其中$w$代表权值,$next$代表以$u$为起始点的上一个边。 $head$代表这个$x$结点在$edge$数组中的最后一个边的下标索引
阅读全文
摘要:图的两种表示方式 邻接矩阵 优点:方便查找,方便操作 缺点:需要空间过大 #define MAX_N 1000 #define ufr(i, x, y) for (int i = x; i <= y; ++i) #define lfr(i, x, y) for (int i = x; i >= y;
阅读全文