传送门 "Luogu" 解题思路 一眼想到二分图:但是求不了最大匹配方案数 oho。 于是考虑这么建图: 直接将一个人可以去的两把椅子连边,然后原图中的2n个点就会形成许多联通块,这个可以分步计数。 又因为每个联通块只会是一棵树或是环套树,所以分类讨论一个联通块内如何计数: + 若该联通块是一棵树( ...
分类:
其他好文 时间:
2019-10-26 22:57:27
阅读次数:
99
传送门 "Luogu" 解题思路 先跑一遍 $\text{Floyd}$ 预处理任意两点距离。 然后再二分时间,将每个人与该时间内可以到达的点连边,建一张二分图。 若最大匹配数大于等于所需,那么就缩小二分范围,最后记得判无解,然后输出答案即可。 细节注意事项 + 网络流好像不是很好写这道题? 参考代 ...
分类:
其他好文 时间:
2019-10-26 22:50:49
阅读次数:
82
题:http://uoj.ac/problem/79 没什么好说的,只是区别于二分图 算法:带花树算法 #include<bits/stdc++.h> using namespace std; #define fo(i,a,b) for(int i=a;i<=b;i++) #define fod(i ...
分类:
其他好文 时间:
2019-10-21 22:16:31
阅读次数:
106
题意: 求$n$个串的最大$LCS$。 思路: 把第一个串建后缀自动机,然后枚举所有串。对于每个串,求出这个串在$i$节点的最大匹配为$temp[i]$(当前串在这个节点最多取多少),然后我们求出最终所有串在$i$节点的匹配最小值$mn[i]$(即为所有串在$i$节点都能取到多少),答案即为$max ...
分类:
其他好文 时间:
2019-10-13 18:31:33
阅读次数:
109
之前在网上看到了很多难懂的证明方法,这里说一种我觉得很简单的证明 首先是一个显然的性质: 最大匹配中: 所有的边,一定至少有一端是匹配边端点,否则的话就不是最大匹配 然后是讨论:所有的边有3类:1.左端点匹配 2.右端点匹配 3.左右端点都匹配 下面考虑这样一种选点方式:所有的边(除匹配边外),左端 ...
分类:
其他好文 时间:
2019-10-11 20:28:08
阅读次数:
100
[TOC] 后缀自动机做题记录 来填之前的坑了。。。考后大概会做做有字符串的综合题吧 "sp1811" lcs板子,对于第一个串建出SAM,第二个串在上面跑,即可求出对于每一个位置的后缀的最大匹配长度 "sp1812" n串lcs板子,对于每个节点去min即可,但是要注意到当前答案对parent子树 ...
分类:
其他好文 时间:
2019-10-10 19:54:21
阅读次数:
99
二分图匹配 "P1129" 这个题还是有一定套路的 将黑色格子所在的行和列连边, 跑一边最大匹配, 如果是完美匹配即可(所有点都是匹配点) why? 在完美匹配的情况下 假如 列1 行5 , 列4 行1 ( 表示匹配) 我们则可以将行5和行1换一下位置, 这样交换 列不会受到影响, 匹配变为列1 行 ...
分类:
其他好文 时间:
2019-10-06 00:38:38
阅读次数:
82
题意:类似二分图匹配给的题目,不过这次在这里给出了k,表示没人可以再多一次匹配机会,这次匹配不能用上一次被匹配的对象 分析:不能用匈牙利做俩次匹配,因为俩次的最大匹配并不等价于总和的匹配,事实证明,你用俩次匹配后会被卡在17个样例 既然二分图不能用匈牙利,那么只能考虑用网络流,这里讲到对于k的处理, ...
分类:
其他好文 时间:
2019-09-30 21:31:08
阅读次数:
91
1 #include <stdio.h> 2 #include <string.h> 3 4 void substr(char *s1, char *s2) 5 { 6 /* 1.设长串开始位置 p, 最大匹配串开始 结束位置 maxStart, maxEnd*/ 7 char *p = s1, *... ...
分类:
其他好文 时间:
2019-09-28 23:41:56
阅读次数:
110