06 2022 档案
摘要:字符哈希就是为字符添加一个数字编号 程序: #include<bits/stdc++.h> using namespace std; const int maxn=1e4; char s[maxn]; const int p=13131; const int mod=1e9+7; int Hash[
阅读全文
摘要:这道题目是一道Dijkstra的题目。 我们先来回顾一下加边函数 void add(int u,int v,int w) { edge[k].to=v; edge[k].w=w; edge[k].next=head[u]; head[u]=k++; } 这道题目可以用优先队列也可以用手写队列(我要用
阅读全文
摘要:这道题目要用到Floyd算法。(也就是那个n³复杂度的东东) 小细节: 1.x==y的f数组要一并设为true 小知识: |(一个|)是运算符只要在参与判断的二个bool之内有一个是一()也就是true就返回true。 &(一个&)是运算符在参与判断的两个bool内必须二个都是true才返回true
阅读全文
摘要:这道题目又要用到新的算法:并查集 其实就是一个向上的递归过程,但我们只关心x点的祖先是谁,这里就可以用到路径压缩(让x直接指向祖先) 👇 int find(int x) { if(fa[x]!=x) { fa[x]=find(fa[x]); } return fa[x]; } 并查集已经弄好了查就
阅读全文
摘要:这道题目需要用到 Dijkstra plus 版(堆优化) 模板还是一样就是有几个点值得注意 1.这里用的是优先队列,原版需要搜出最小,并且没用过的点,省时间就剩在这里用小根堆就可以完美解决这个问题。 2.模拟链表(我认为有亿 一点难度)需要h,e,w,ne来模拟。 3.还有一个add(a,b,c)
阅读全文
摘要:这道题目又是一个新算法,名叫Dijkstra 主要思路是:输入+dist和vis初始化(都初始化为0x3f)+输入g(邻接矩阵)+Dijkstra函数 Dijkstra函数:先将dist[1]设为1(起点到起点当然0代价),然后将每个点都更新一遍。在循环里面我们先找出最小但没更行新的点然后用这个点更
阅读全文
摘要:这道题目涉及到一个新算法:Floyd 这里不放洋屁了,大体就是 DP! 就是一个固定格式的dp 它的核心代码非常简单(也非常像dp) for(int k=1;k<=V;k++) { for(int i=1;i<=V;i++) { for(int j=1;j<=V;j++) { if(dis[i][j
阅读全文