图论(含优先队列)
。。
2020100XWH
这个作者很懒,什么都没留下…
展开
-
换根呀呀啊呀
登录—专业IT笔试面试备考平台_牛客网#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+5000;struct edge{ ll to,next,w;}e[N*2];ll head[N],tot,flow[N],deg[N],sum,ans[N];void addedge(ll u,ll v,ll z){ e[tot].to=v; e[t原创 2022-05-31 16:02:30 · 62 阅读 · 0 评论 -
树上三点到一点最小距离和
1.距离的爬树考虑(先爬到lca再下去)2.输入量大的时候注意快读加速很多3.inline4.对于处理分类讨论问题,结构清晰效率更高5.倍增求lca6.从简单情况画图分析[AHOI2008]紧急集合 / 聚会 - 洛谷#include<iostream>#include<cstring>#include<vector>#include<cstring>#include<cmath>#include<..原创 2022-03-18 17:20:11 · 569 阅读 · 0 评论 -
树的直径(
1.树的dfs遍历2.一些重复的小操作避免复杂思考(舍3.复杂度考虑4.多线程问题,考虑能否分开处理,避免交叉复杂(本质是否影响)多种情况分开考虑清楚5.一些贪心选择[NOIP2007 提高组] 树网的核 - 洛谷#include<iostream>#include<cstring>#include<vector>#include<cstring>#include<cmath>#include<a..原创 2022-03-16 16:02:44 · 96 阅读 · 0 评论 -
树链剖分(
小猪佩奇爬树 - 洛谷1.倍增在线lca2.父子链与非父子链(lca判断)3.图论数据溢出(tmd真不好想,点乘点4.由简入难 逐步讨论画图总结规律#include<iostream>#include<cstring>#include<vector>#include<cstring>#include<cmath>#include<algorithm>using namespace std;c..原创 2022-03-16 03:23:56 · 194 阅读 · 0 评论 -
树的直径(
【XR-3】核心城市 - 洛谷他解:拓扑排序,直接考虑#include<bits/stdc++.h>using namespace std;const int N=1e5+50;typedef long long ll;int n,k;struct edge{ int to,nex;}e[N<<1];int uu,vv;int deg[N];int head[N];int num=0;void add(int u,int v){ .原创 2022-03-12 23:57:00 · 154 阅读 · 0 评论 -
lca(tarjan离线)
预处理nlogn,查询o(1);【模板】最近公共祖先(LCA) - 洛谷#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+50;int n,m,s,uu,vv;int head[N];int que[N];int fa[N];struct edge{ int to,nex;}ee[N<<1],ce[N<<1];int...原创 2022-03-11 17:28:01 · 154 阅读 · 0 评论 -
树的重心(
对于一个无根树,可以直接设定1为根节点(树可以以任何一个点作根)从根dfs可以遍历以每个点为根的子树的节点个数,然后遍历每个点就是父节点-子树个数+(n-子树个数)找最小即数的重心[NOIP2007 提高组] 树网的核 - 洛谷#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e4+50;int d[N];int f[N];int n;struct edge{原创 2022-03-11 10:43:22 · 63 阅读 · 0 评论 -
拓扑排序(访问层数,判断有无环)
通过看加入队列的元素个数和总元素个数判断有无环通过记录队列访问层数得到最长链的长度排序 - 洛谷#include<bits/stdc++.h>using namespace std;int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();} while(c>='0'&&c<..原创 2022-03-09 17:07:59 · 203 阅读 · 0 评论 -
无限地图搜索
只需要求走到相同位置时的坐标不一样,加和不能记录坐标的唯一性,多开一维数组记录幻象迷宫 - 洛谷#include<bits/stdc++.h>using namespace std;int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();} while(c>='0'&&c<='9'原创 2022-03-09 14:58:23 · 58 阅读 · 0 评论 -
词链(((
1.连所有词2."."小于所有小写字母,空小于有,即字典序3.因为同字母可连边,所以把它们当作同一个点,每个词当作有向边,欧拉路处理(存在的充要条件)#include<bits/stdc++.h>using namespace std;struct one{ int to,num;};string p[1005];vector<one> a[30];int tt[30][2];bool cmp(string x,string y){ re原创 2022-03-08 09:58:01 · 49 阅读 · 0 评论 -
有向图的缩环操作(tarjan)
dfs结合low利用递归查找最大连通块,缩环。对图的记录和访问,对每个点用边进行链表,找路径权值最值,拓扑排序更新【模板】缩点 - 洛谷#include<bits/stdc++.h>using namespace std;int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();} while(c>=原创 2022-03-04 12:09:44 · 264 阅读 · 0 评论 -
拓扑排序解决 有序处理问题
一共n个车站,给m行数,每次所给的车站等级大于未给者,要求分级最小划分数;建立有向图,a[i][j]记录i小于j等级,记录每个点入度,入度为0的等级最低,加入队列,去点,减去所连点的度数,每一轮设置一个等级(!问题提取)#include<bits/stdc++.h>using namespace std;int read() { int x=0,f=1; char c=getchar(); while(c<'0'||c>'9'){if(c=='-原创 2022-03-02 09:11:16 · 66 阅读 · 0 评论 -
UVA11997
k组k个数各取1个前k小个和简化为两个序列,一维排序,另一维取大小,在加入次大维护k个优先队列对于多个序列,即为合成#include<bits/stdc++.h>#pragma GCC diagnostic error "-std=c++11"#pragma GCC target("avx")#pragma GCC optimize(3)#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma原创 2022-01-27 05:35:24 · 80 阅读 · 0 评论 -
LA3135
队列是动态数组(优先队列,自动排队动态,队列成员可以是结构体,优先级设定using namespace std;struct one { int time,per,num; bool operator <(const one& a)const{ return time>a.time||(time==a.time&&num>a.num); }};priority_queue<one>pq;int mai原创 2022-01-27 03:44:16 · 307 阅读 · 0 评论