1443: [JSOI2009]游戏Game - #include <Seter> - using namespace Orz;

1443: [JSOI2009]游戏Game

Seter posted @ 2011年8月21日 14:12 in BZOJ with tags NetworkFlow BipartiteGraph JSOI Match , 3970 阅读

http://www.zybbs.org/JudgeOnline/problem.php?id=1443

 

RunID User Problem Result Memory Time Language Code Length Submit Time
144407 Seter 1443 Accepted 2340 kb 448 ms C/Edit 2046 B 2011-08-21 13:21:14

这题囧翻了,WA到实在受不了了去找Delostik神犇的代码然后几乎改得一模一样了还是WA。无奈下对拍,结果发现==比&先算……加个括号果断AC。不过时间只排了第十,第一的那个15MS怎么弄出来的……

做法很简单……黑白染色后构二分图然后判断没一个点是否必在最大匹配里……但是怎么输出WIN的位置想了好久,看了WJMZBMR神犇的题解也稀里糊涂,后来画了几张图看看好像又有点感觉了,再去看题解觉得好像是对的,看代码发现真的是对的……就是在残量网络上从S开始DFS一遍能DFS到的左边的点,和把边反向DFS一遍能DFS到的右边的点都是W位置。至于为什么是对的……呃……我反正证不出来,看看好象是对的就写了。我果然是苣蒻……

我想了一下,大致是这样的:假设用匈牙利算法,跑出来以后观察所有左边的点,不在最大匹配中的必定可以不在最大匹配中(废话),对这些点继续DFS,所有能DFS到的左边的点必定可以通过这条DFS路增广使得这个点不在最大匹配中(已经是最大匹配了,如果能增广只可能将匹配数增加0)……右边也一样……但是由于构图原因所以右边的点DFS时需要把边反向(相当于反过来匈牙利一下)。

我的2B代码……(最近好像萌上了狂交……AC(5)都不罢休……我难道被Oleg带坏了么?)

By Seter

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee