
网络流
hrbust_wgq
当我们理解了一个东西的时候,所应该做的,是将这个东西放下去,好让更多的人明白和掌握;而不是举起来,以一种高姿态故作高深。这不是科学文化发展和传播的正道。有时候,所谓的“一言以蔽之”,不经意间,就“蔽”掉了求知者的热情和渴望,同时也就“蔽”掉了科学文化的健康传承。
把问题说清楚,尽可能让更多的人明白,是博客的宗旨。直达本质,直达底层,去术语化,用最通俗、最平易的语言和讲解方式说清“到底是什么”、“原来是这样”,是要努力的方向。
展开
-
Codeforces Round #720 (Div. 2) D. Nastia Plays with a Tree
D. Nastia Plays with a Tree题意:n个节点的树,用最少的操作次数使得每个节点的度数<=2保证最后也是一棵树。操作:选择一条已存在的边删掉在任意两个节点间添加一条边输出:最小的操作次数以及每次的删除边的节点以及加边的节点思路:看题解没写网络流解法,那我来写一下。首先看复杂度如果线性建边:O(n*sqrt(n))树是一个特殊的二分图,可以染色后保持原来的边不变且flow=1S——左部点 flow=2. 右部点——>T flow=2.这样跑出最大流之原创 2021-05-10 13:15:11 · 237 阅读 · 0 评论 -
The 14th Jilin Provincial Collegiate Programming Contest K Forager
K Forager题意:思路:代码:题目链接:题意:给你一个n*m的矩阵,矩阵上可以分为五类点。1.‘.’代表空地。2.‘ULRD’代表有一束射线从此处对应的方向发出。3.‘^<>v’代表方向转换器,(能吸收所有的射线并从对应的方向发出,你可以扭动这个转换器的出射方向,每次90degree,每次花费val[i][j],而且一旦方向确定,就不能中途改变了 )4.‘x’代表这里有一个宝石价值是c[i][j],射线可以照到但不能穿过该地方。5.‘#’代表墙体,射线不能穿过。问:你最多原创 2020-11-06 20:00:19 · 671 阅读 · 5 评论 -
2017 CCPC 秦皇岛 H Prime Set ZOJ 3988(网络流)
2017 CCPC 秦皇岛 H Prime Set ZOJ 3988题意:给一个数组,对于每两个数加起来为素数那么就是一个集合,求不超过k个集合的最多数是多少?思路:很容易想到n^2建边跑最大匹配,出现两个问题:1.两个集合中可能出现相同元素,这样最大匹配不是答案(比如:样例2)2.素数=奇数+偶数(奇偶建边),但是特例:1+1=2Solution:1.对于第一个问题,我们假设跑出来的最大匹配是ans,那么会有ans * 2个不重复元素,k-ans个和前面重复的和k-ans和前面不重复的,答案原创 2020-06-28 09:29:25 · 266 阅读 · 0 评论 -
Undirected Vertex Geography
Undirected Vertex Geography无向点地理问题在一个无向二分图上进行轮流移动棋子游戏,不能经过重复的点。当且仅当棋子在所有最大匹配上时,先手必胜。一个点在所有最大匹配上的条件:S到这个点有流量,且它不属于源点割集。 ac.Dinic(); ac.bfs(); for(int i=head[s]; i; i=edge[i].next) { int v=edge[i].to; if(v<=n1&&ed原创 2020-06-17 11:33:52 · 448 阅读 · 0 评论 -
最小割
最小割什么是最小割?一个割就是一组边的集合,将给集合边从图中边集合中移除,那么图被分割为两个部分,这两个部分之间没有任何边连接。如何找到这个最小割?当一个图被割分成两个部分时,不再存在S到T的通路,所以割的代价必定大于等于图的最大流(这个需要添加额外说明吗?应该不需要吧,算是非常明显的结论了吧)。那么也就是说,割的代码最小不能小于图的最大流,也就是割的代价等于图的最大流。例题1题意:每...原创 2020-03-23 17:29:20 · 4265 阅读 · 0 评论