【TJOI2013】攻击装置

【TJOI2013】攻击装置

【题目描述】

给定一个01矩阵,其中你可以在0的位置放置攻击装置。每一个攻击装置(x,y)都可以按照“日”字攻击其周围的8个位置(x-1,y-2),(x-2,y-1),(x+1,y-2),(x+2,y-1),(x-1,y+2),(x-2,y+1),(x+1,y+2),(x+2,y+1)
求在装置互不攻击的情况下,最多可以放置多少个装置。

【输入】

第一行一个整数N,表示矩阵大小为N*N。接下来N行每一行一个长度N的01串,表示矩阵。

【输出】

一个整数,表示在装置互不攻击的情况下最多可以放置多少个装置。

【输入样例】

3
010
000
100

【输出样例】

4

【数据范围】

30%数据N<=50
100%数据 N<=200

【题解】

一眼看出是骑士共存问题,但是没有一次AC,果然我还是蒟蒻到爆ORZ

二分图最大独立集,首先对矩阵黑白染色,然后虚拟一个原点与可用的黑点相连,流量为1,再虚拟一个汇点与可用的白点相连,流量为1。可以发现黑点能攻击的点都是白点,所以所有黑点向可以攻击到的白点连一条流量∞的边,这样就建好图了。

表示这个数据量Hungary是完跪了,Hopcroft-Karp大概能过(蒟蒻写不来XD),高效网络流乱搞什么的就可行了。表示本蒟蒻的Dinic加了各种优化还TLE,最后发现有一个小细节没注意到,修改后就AC了,果然我还是太粗心了(╯﹏╰)

【代码】

Dinic,修改后加上了当前弧优化,速度蛮不错~

阅读更多
换一批

没有更多推荐了,返回首页