网络流24题
codancer
为信仰而战斗
展开
-
【LOJ 网络流24题】太空飞行计划
太空飞行计划 题解: 最大权闭合子图,设V′V'V′为G(V,E)G(V,E)G(V,E)的一个点集,如果VVV中对于每个点的所有的出边所到达的点也∈V′\in V'∈V′,那么V′V'V′即为一个闭合子图,最大权闭合子图即为所有的闭合子图中权值和最大的。 定理:从SSS向所有权值为正数的点增加一条等于该点点权的流量的边,从所有权值为负数的点向TTT增加一条等于该点权绝对值流量的边,对于u(wu&...原创 2019-10-10 16:46:55 · 167 阅读 · 0 评论 -
【LOJ 网络流24题】最小路径覆盖
最小路径覆盖 题解: 假设x,yx,yx,y之间有一条边,则把xxx和yyy分别拆成x1,x2,y1,y2x_1,x_2,y_1,y_2x1,x2,y1,y2。在x1x_1x1和y2y_2y2之间连接一条流量为111的边,构造好二分图后答案即为n−maxmatchn-maxmatchn−maxmatch。对于方案的输出,可以利用并查集,对于xxx和yyy,如果流量流经x−>yx-...原创 2019-10-10 16:48:05 · 189 阅读 · 0 评论 -
【LOJ 网络流24题】魔术球
魔术球 题解: 考虑如果i+ji+ji+j为完全平方数,则iii和jjj之间连一条边,那么最后构成一个图GGG,那么问题即可转化为寻找一个最大的数字mmm,使得按照上述方法构成的图的最小路径覆盖数小于等于nnn,我们二分mmm即可,构造方案同最小路径覆盖一题。 #include<bits/stdc++.h> using namespace std; const int N = 100...原创 2019-10-10 18:50:14 · 197 阅读 · 0 评论 -
【LOJ 网络流24题】圆桌聚餐
圆桌聚餐 题解: 从SSS向每个单位连接流量为rir_iri的边,每个单位向每个桌子连接流量为111的边,每个桌子向TTT连接流量为cic_ici的边,跑最大流即可。如果满流,即maxflow=maxflow=maxflow=人数,则存在方案。对于方案的输出:对于每个单位,记录下向哪些桌子流出了流量即可。 代码: #include<bits/stdc++.h> using nam...原创 2019-10-11 14:49:54 · 249 阅读 · 0 评论 -
【LOJ 网络流24题】最长递增子序列
最长递增子序列 题解: 对于第一个查询直接dpdpdp即可,dpidp_{i}dpi代表以iii结尾的最长上升子序列的最大长度,计算出sss。 对于第二个查询,对于每个点拆分成两个点i1,i2i_1,i_2i1,i2,如果dpidp_idpi为111,则SSS向i1i_1i1连接流量为111的边, 如果dpidp_idpi为sss,则i2i_2i2向TTT连接流量为111的边,对于每...原创 2019-10-11 15:01:57 · 183 阅读 · 0 评论 -
【LOJ 网络流24题】试题库
试题库 题解: SSS向mmm中类型连接容量为对应需求量的边,题目种类和对应的属于该种类的题目连流量为1的边,每道题和TTT连流量为111的边,跑最大流即可。 #include<bits/stdc++.h> using namespace std; const int N = 80000; const int maxn = 2000; const int INF = 0x3f3f3f...原创 2019-10-11 17:47:10 · 303 阅读 · 0 评论 -
【LOJ 网络流24题】方格取数
方格取数 题解 按照顺序对应不同的格子染色,相邻的染不同的颜色,从SSS向所有的黑色的点建流量为对应权值的边,从所有的白点向TTT建流量为对应权值的边。对于有冲突的黑点和白点之间建流量为infinfinf的边,跑最小割,所有点的和减去最小割即为答案(最大权独立子集) 代码: #include<bits/stdc++.h> using namespace std; const int ...原创 2019-10-11 17:52:52 · 153 阅读 · 0 评论