上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 28 下一页
摘要: 思路 这题的转化很妙,我看了一下题解才想明白。 首先显然往返不需要走一个环,直接原路返回可以达到最优,所以危桥至多只能走 $2$ 次可以和往返直接抵消掉。 变成危桥最多只能走 $1$ 次,不需要往返,只要过去就行了。 那么想到用网络流,从超级源 $s$ 向 源点 $a_1,b_1$ 连边,从汇点 $ 阅读全文
posted @ 2022-07-01 11:23 A_zjzj 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 思路 先考虑二维的怎么做,发现选了一列要填,那么肯定是这一列都填一遍,然后发现如果有一个点要被填,也就是这一列和这一行只要要填一个,建出二分图,直接跑个最小点覆盖(也就是选出最少的点使得每条边都至少有一个点被覆盖,数值上等于最大匹配)。 然后转化到三维上去,就是直接枚举一维的覆盖情况,然后转化到二维 阅读全文
posted @ 2022-07-01 09:33 A_zjzj 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 思路 考虑先对各点黑白染色,然后对于相邻的点连边建出二分图。 如果这个二分图有完全最大匹配(即每个点都匹配到了),那么先手必败,因为无论选那个点,后手只要向这个点匹配的另一个点走就行了。 如果是不完全最大匹配,那么先手必胜。 所以先手只要选到不一定在最大匹配中的点开始就一定赢,因为无论接下来后手走到 阅读全文
posted @ 2022-06-29 21:52 A_zjzj 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 思路 第一问 第一问与YbtOJ「图论」第1章 二分图匹配 J. 祭祀一模一样。 考虑处理出原 dag 图的两两点之间能否可达(可用 Floyd),然后题中是求最大的若干点之间没有两两可达的点对。 那么建出二分图之后,发现如果出现一对匹配,那么相当于这两个点里面有一个不能选了,所以答案就是总的点数- 阅读全文
posted @ 2022-06-28 21:26 A_zjzj 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 思路 考虑处理出原 dag 图的两两点之间能否可达(可用 Floyd),然后题中是求最大的若干点之间没有两两可达的点对。 那么建出二分图之后,发现如果出现一对匹配,那么相当于这两个点里面有一个不能选了,所以答案就是总的点数-最大匹配。 代码 #include<bits/stdc++.h> using 阅读全文
posted @ 2022-06-28 20:49 A_zjzj 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 思路 会发现要求一个最大的完全子图(每个点两两之间有连边),所以考虑把建出原图的反图,然后每个点两两之间有连边就转化成为了每个点两两之间没有连边,也就是二分图的最大独立子集,是需要用总点数-最大匹配即可。 代码 #include<bits/stdc++.h> using namespace std; 阅读全文
posted @ 2022-06-28 19:50 A_zjzj 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 思路 发现模板串最多只有一个*,所以考虑对于一个含有*的模板串,相当于链接了两个不含*的模板串。 所以我们先把所有的串转换为不含*的模板串,然后两两判断是否可以连边(因为只能有一个*,所以判断依据就是 $\operatorname{popcount}(u \operatorname{xor} v)= 阅读全文
posted @ 2022-06-28 19:31 A_zjzj 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 思路 直接按照要求的走法可以建出一张 dag 图,发现就是跑一个最小路径覆盖,参见洛谷P2764,题解。 只需要用二分图匹配,每一次连接了一对匹配,相当于合并了两条路径(单个点也认为是路径),所以要让路径总数最小,就要让匹配的数量最大,由于是路径,所以每个点的入点和出点都最多只能连两条边。 代码 # 阅读全文
posted @ 2022-06-28 08:31 A_zjzj 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 思路 只需要用二分图匹配,每一次连接了一对匹配,相当于合并了两条路径(单个点也认为是路径),所以要让路径总数最小,就要让匹配的数量最大,由于是路径,所以每个点的入点和出点都最多只能连两条边。 代码 #include<bits/stdc++.h> using namespace std;typedef 阅读全文
posted @ 2022-06-27 21:24 A_zjzj 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 思路 问题转化为了在一张 dag 图上求出最小路径覆盖,见洛谷P2764,题解。 只需要用二分图匹配,每一次连接了一对匹配,相当于合并了两条路径(单个点也认为是路径),所以要让路径总数最小,就要让匹配的数量最大,由于是路径,所以每个点的入点和出点都最多只能连两条边。 代码 #include<bits 阅读全文
posted @ 2022-06-27 21:23 A_zjzj 阅读(19) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 28 下一页