中级农民
- 积分
- 101
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-8-5
- 最后登录
- 1970-1-1
|
G家有一题(lintcode1576),给一个地图,有一些人和自行车(相同数量),需要你一个人匹配一个单车(一对一),然后总路程最短。
可以转化成二分图带权值的最大完美匹配。这个说实话不是像不带权值的匈牙利算法那么简单...还是需要一定的设计的。
总的来说还是找增广路,但是从一个tight edge找起,如果没有tight edge就调整图直至有tight edge augmentation path。
tight edge的定义就是y(u)+y(v) = w(u, v)。其中y()是对每一个点的分数,w是边的权值。保证所有点y(u)+y(v) >= w(u, v)。当y(u)+y(v)=w(u,v)则为tight。
怎么调整呢?就是从左边的点把权值推到右边去,(减小y_L,增大y_R,这样没有访问过的y_R就有可能和减小的y_L组成新的tight edge)。
可能会开一个新的帖子来写模板
- 11/06
- (lt)315H. Count of Smaller Numbers After Self
- (10min). mergesort
- (lt)1576H. Optimal Match
- (60min). bipartite max perfect matching. hungarian algorithm with weights (dual value+tight edge+augmentation path+delta). O(MN^2)
- (lt)1641M. Max Remove Order
- (13min). Union-find set
- (lt)1646M. CheckWords
- (15min). BFS
- (lt)1640H. Duplicates Digits
- (15min). DP. add another dimension if have to handle different cases
- 936H. Stamping The Sequence
- greedy simulation |
|