随笔分类 -  二分图—匈牙利算法

摘要:因为没有重复串,所以把有包含关系的串连边之后是个DAG,也就是二分图,就变成求二分图的最大独立集=n 最小点覆盖=n 最大匹配 关于包含关系,建出AC自动机,然后把串放上去找子串,但是如果每次都一路找到根就会T,所以每次只找最近的一个,并且对于没有结尾id的点承接father的id,这样就O(1)的 阅读全文
posted @ 2019-06-01 23:34 lokiii 阅读(415) 评论(0) 推荐(0)
摘要:誰か 名前を呼んで 僕の 突然悲しくなるのは何故 阅读全文
posted @ 2018-10-12 17:19 lokiii 阅读(145) 评论(0) 推荐(0)
摘要:この世界を動かす糸の先には気取った顔した君がいるのか 阅读全文
posted @ 2018-09-26 11:59 lokiii 阅读(135) 评论(0) 推荐(0)
摘要:网格图黑白染色,然后能互相攻击到的点之间连边,跑匈牙利算法最大匹配,答案是好点个数 最大匹配(最大独立集) 注意pao的时候只从一种颜色的格子统计即可 cpp include include using namespace std; const int N=205,dx[]={2,2, 2, 2, 阅读全文
posted @ 2018-08-05 21:55 lokiii 阅读(207) 评论(0) 推荐(0)
摘要:没啥可说的,就是一边属性一边道具建二分图,把两个属性都连到道具上,然后枚举匹配,如果无法匹配就输出,时间戳优化 cpp include include include using namespace std; const int N=1000005; int n,x,y,h[N],cnt,lk[N] 阅读全文
posted @ 2018-07-28 22:39 lokiii 阅读(146) 评论(0) 推荐(0)
摘要:注意到怎么换都行,但是如果把某个黑方块用在对角线上,它原来所在的行列的的黑方块就都不能用 所以要选出n组不重的行列组合,这里用匈牙利算法做二分图匹配即可(用了时间戳优化) cpp include include include using namespace std; const int N=405 阅读全文
posted @ 2018-07-26 22:53 lokiii 阅读(160) 评论(0) 推荐(0)
摘要:二分图最大点覆盖模型,因为对于一个点(x,y)显然只要选x或者y就好了,于是连边,跑最大匹配=最大点覆盖(不会证) cpp include include using namespace std; const int N=10005,inf=1e9; int n,m,h[N],cnt,con,lk[ 阅读全文
posted @ 2018-05-08 20:20 lokiii 阅读(170) 评论(0) 推荐(0)
摘要:经典二分图匹配问题。把每个点拆成两个,对于原图中的每一条边(i,j)连接(i,j+n),最小路径覆盖就是点数n 二分图最大匹配。方案直接顺着匹配dsf。。 cpp include include using namespace std; const int N=505,M=120005; int n 阅读全文
posted @ 2018-02-06 22:05 lokiii 阅读(295) 评论(0) 推荐(0)