0%

Starters 191-Coloured Array(无向图边的定方向问题)

思路讲解

一般来说,这种绿题图论建模都是有套路的,一般来说就是在一个联通图内匹配符合一些性质(可能匹配数量直接和V和E相关,也有可能跑一个dfs就出来了)。

我仔细看了一下,感觉可以转化为无向图边的重定向问题 CF-1021-D. Baggage Claim

这些是整段代码最重要的部分。其实这部分成立的原因是该子图是联通的(虽然是废话)。

那么我们可以想到一种构造方式,就是从*点(完美匹配点,若没有就从双边点向外延伸,若还没有就无所谓了)出发,然后定向,形成像树一样的形状。

image

1
2
3
4
5
ll size=fa.size(i);
ll edge=fa.edge[fa.find(i)];
ll mcc=fa.mcc[fa.find(i)];
// 现在这里的ans意思是我可以白嫖多少元素
ans+=2*mcc+min(edge,size-mcc);

AC代码

https://www.codechef.com/viewsolution/1167249816

心路历程(WA,TLE,MLE……)

WA https://www.codechef.com/viewsolution/1167153030

就是贪心做法,优先处理比较独特的。

显然会被相等的一些hack数据hack

1
2
3
4
5
1
3
1 3 2 3 1 2

3