codechef Chef at the River

难度

\(hard\)

题意

官方中文题意

做法

\(G=(V,E)\)
定义1\(M(G)\)\(G\)的最小点覆盖
定义2\(ans(G)\)\(G\)的题意答案,不考虑船夫

结论1\(M(G)\le ans(G)\)

第一次最少也得带走\(M(G)\)

结论2\(ans(G)\le M(G)+1\)

即用\(M(G)+1\)个位置必定能带走所有人:第一次带上\(M(G)\),其放在船上不动,然后每次将左岸一个点放入船中再带到右岸

结论3\(G\)是菊花图时\(ans(G)=M(G)=1\)

显然,不详述

结论4\(G\)不是菊花图时\(ans(G)=M(G)\)

第一次带\(M(G)\),显然\(M(G)\ge 2\),考虑\(M(G)\)所代表的点集中两个不同点\(u,v\),我们将\(v\)放在右岸将与\(u\)相邻且不与\(v\)相邻的点带上放在右岸;由于同时与\(u,v\)相邻的点至多有\(1\)个,放完后带上\(v\),在与左岸交接时将\(v\)放在左岸,带上至多的那一个点,如果没有则不带;这时我们将船上空出来了一个位置,将\(G\backslash M(G)\)全部放入右岸即可

然后就是板子了

猜你喜欢

转载自www.cnblogs.com/Grice/p/12242078.html