图论
Dlkoiw
这个作者很懒,什么都没留下…
展开
-
wxh-b
wxh-b细节比较多,主要思路就是转换为找最短路#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+5,M=1e5+5;//int head[N],cnt=0,a,b,c,d,e,m;struct edge{ int link,v,l;}q[M<<1];void put(int u,int v,int w){ q[++cnt].v=v; q[cnt].原创 2020-11-17 18:16:53 · 293 阅读 · 0 评论 -
树
树这道题虽然已经做过多次,但比赛时还是不会做。看了题解之后,我觉得要是我自己想肯定是做不出来的 qwq————————————————————————————————f[i]表示i到fath[i]的期望步数,g[i]表示fath[i]到i的期望步数仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在lo原创 2020-09-14 18:41:43 · 113 阅读 · 0 评论 -
简单的操作
简单的操作本题是个结论题,很容易猜出奇环是一定不行的,然后可以构造出一个二分图,我们发现对于一个点来说,可以将到它距离相等的点合并,所以最后一定可以合并成一条链所以对每个点跑最短路就行了#include<bits/stdc++.h>using namespace std;const int N=1010,M=1e5+5;int ss,n,m,head[N],vis[N],flag[N],tnt=0,cnt=0;bool ex[N];struct edge{ int u,v,l原创 2020-08-03 02:38:21 · 117 阅读 · 0 评论 -
城市猎人
城市猎人手玩样例发现其实如果当两个点已经联通了,那么再连一条边其实没什么用,所以可以不连这条边,然后就构造出了一棵树,然后就不会了事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案#include<bits/stdc++.h>using namespace std;原创 2020-08-03 02:25:45 · 203 阅读 · 0 评论 -
LCA
LCA本篇博客讲解的是倍增求LCA的方法本篇博客讲解的是倍增求LCA的方法本篇博客讲解的是倍增求LCA的方法对于一颗树,我们先给每个点求出各级祖先对于一颗树,我们先给每个点求出各级祖先对于一颗树,我们先给每个点求出各级祖先void dfs(int ss,int fath){ depth[ss]=depth[fath]+1; if(ss!=s)fa[ss][0]=fath;//赋初值 f...原创 2020-01-14 20:48:37 · 237 阅读 · 0 评论 -
最短路
最短路本题虽然说是最短路,但直接套模板肯定不行,于是就考虑用其它方法,因为每条边的长度为1或2,所以我们可以对于长为2的边新建一个节点,这样就可以广搜了,时间复杂度玄学,加上register和read才能过本题虽然说是最短路,但直接套模板肯定不行,于是就考虑用其它方法,因为每条边的长度为1或2,所以我们可以对于长为2的边新建一个节点,这样就可以广搜了,时间复杂度玄学,加上register和rea...原创 2020-01-03 16:55:54 · 115 阅读 · 0 评论 -
最短路
在我的博客里有一道相似的题,区别就是这题k!能过在我的博客里有一道相似的题,区别就是这题k!能过在我的博客里有一道相似的题,区别就是这题k!能过传送门题目:最短路P.S 这题有个坑点,k可能为0,要特判我们发现k很小,所以直接处理每个关键点到其它点的最短路即可,然后状压或者深搜都能过,1.状压状压即将现在已走过的关键点的集合枚举出来,枚举最后一个点和上一个最后的点,转移即可(时间复杂度是...原创 2019-11-06 18:27:58 · 114 阅读 · 0 评论 -
QAQ的图
QAQ的图本题时间复杂度玄学,其实暴力就可以过,暴力,就是把每个点枚举可不可以选,时间有O(2n),所以肯定是不行,而我们加一个优化,一个点可以不选当且仅当与他相连的点没有一个不选,这样时间就优化成O(2n/2),n<=50,所以能过本题时间复杂度玄学,其实暴力就可以过,暴力,就是把每个点枚举可不可以选,时间有O(2^n),所以肯定是不行,而我们加一个优化,一个点可以不选当且仅当与他相连的...原创 2019-11-02 08:23:03 · 149 阅读 · 0 评论 -
迷宫maze
maze我本来以为k!k!k!能过的仔细观察,发现k很小,这时想到状压dp,具体地,用集合S表示已经解救的伙伴的集合,dp[S][i]表示当前集合为S,最后的位置为i的最小值仔细观察,发现k很小,这时想到状压dp,具体地,用集合S表示已经解救的伙伴的集合,dp[S][i]表示当前集合为S,最后的位置为i的最小值仔细观察,发现k很小,这时想到状压dp,具体地,用集合S表示已经解救的伙伴的集合,d...原创 2019-10-06 11:33:26 · 106 阅读 · 0 评论 -
字符串问题
字符串问题首先第一个要解决的是题意理解的问题,即什么时候会不合法仔细观察会发现,当字符串的价值大于0且出现重复字母时是没有最大值的,这很像最短路,仔细看看发现是的,然后就是打代码了昨晚又没睡好,结果手写站队列炸了——————————————————————————————————————这题数据小,而因为每个点都要搜,又不能用dijstra,spfa有可能退化到O(n3),所以用弗洛伊...原创 2019-10-04 20:34:22 · 109 阅读 · 0 评论 -
树形dp——DOVE爱旅游
DOVE爱旅游本题一看就是树形dp,直接写模板就行了#include<bits/stdc++.h>using namespace std;const int N=1000010;int cnt=0,n,a[N],dp[N][2];struct egde{int link,v;}q[N*2];int head[N];void put(int x,int y){q[++c...原创 2019-09-20 21:28:40 · 259 阅读 · 0 评论 -
图论
dijstradijstra只能遍历没有负边的图迪杰斯特拉算法是基于贪心的算法,是图论中的基本算法实际上我是习惯写spfa,早就知道spfa会被卡,以前我偏不信这个忠告但经历了多次的超时后,我终于开始认真学dijstra了dijstra算法实际上是贪心每次从队首选出一个dis[u]最小的值,将它做标记,使它不能再被遍历并从它开始遍历,遍历到不在队列里的点就加入队列重复上述操...原创 2019-07-21 23:13:17 · 139 阅读 · 0 评论