
多校
爱睡觉的Raki
我不能只做观众
展开
-
2020牛客多校训练3 G Operating on a Graph(并查集+链式结构)
. G题 题意:每一次q,只要a团b团相邻,就将其合并 开一个vector维护每个团内的点和相邻的点的信息,用并查集维护每个点的所属团,每次将ooo统领与和它相邻的团合并 做法就对于每一个跟ooo团相邻的点(属于ooo团的点直接跳过),遍历所有属于这个点的祖先的边将其团内所有的点和ooo团相连即可 #include<bits/stdc++.h> using namespace std; const int maxm=8e5+5; vector<int>e[maxm]; int n,原创 2020-07-18 22:42:58 · 473 阅读 · 3 评论 -
2020牛客多校训练2 I Interval(对偶图最短路求最小割)
先转化成网格图,跑最大流是不可能跑最大流的,这数据范围一下就卡死,而且还要开mapmapmap来判重 只能跑跑对偶图最短路这样子 对偶图图如图所示,除了网格本来有的边之外的图就是对偶图,思想就是用两个点把你原图有的边给割掉,两点间的权值也等于原图这条边的权值,跑出来的最短路即为最小割 解释一下建图方式: 如果j>nj>nj>n就连到汇点 如果i<1i<1i<1就连到源点 建图完直接dijdijdij最短路即可(作死用spfaspfaspfa的话开心就好) 完整代码: .原创 2020-07-14 18:26:20 · 1203 阅读 · 0 评论 -
2020牛客多校训练1 H Minimum-cost Flow(最小费用流)
H题 先给出每条边的费用,qqq组询问,问当每条边的流量为u/vu/vu/v时,跑到流量为1的最小费用 看到数据范围就知道肯定最多只能跑一次费用流,不然会直接TTT飞 思路:求最小费用流的过程中记录每一次增广路增加的流和费用,用mapmapmap记录,最后贪心选择费用小的边进行输出(官方题解和一般的题解我一个都看不懂) #include<bits/stdc++.h> #define int long long using namespace std; const int inf=0x3f3f原创 2020-07-12 23:59:05 · 999 阅读 · 0 评论