【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,修改后加上了当前弧优化,速度蛮不错~ 【TJOI2013】攻击装置#代码