题目大意

nn 顶帐篷,第 ii个帐篷位于点 (xi,yi)(x_i, y_i) 上,权值为 wiw_i。当且仅当 xix_iyiy_i 都是偶数时,帐篷 ii 才是重要的。除一些帐篷,使得对于每个剩余的重要帐篷 (x,y)(x, y),不存在另外 33 个帐篷 (x1,y1),(x2,y2)(x' _ 1, y' _ 1),(x' _ 2, y' _ 2)(x3,y3)(x' _ 3, y' _ 3),使得以下两个条件都成立:

  • xjx,yjy1|x'_j-x|,|y'_j-y|\le 1,对于所有 j{1,2,3}j\in\{1,2,3\}

  • 这四个帐篷形成一个平行四边形(或矩形),它的一条边平行于 xx 轴。

请将未移走的帐篷重量之和最大化,输出最大值。

其中数据范围满足,1n1000,109xi,yi1091\le n\le 1000,-10^9\le x_i,y_i\le 10^9

思路

将节点的 xi,yix_i,y_i 的奇偶性划分成 A,B,C,DA,B,C,D 四个集合,注意相邻集合在图中需要时可以满足 dist\operatorname{dist}11 的。

容易发现对于一个不合法的四边形,一定满足四个帐篷之间的切比雪夫距离均为 11 而且四个点分别属于 A,B,C,DA,B,C,D 四个集合。

每一种帐篷只有选择或者不选择,考虑使用最小割进行求解。

因为帐篷 uu 无法在最小割中被删除,考虑将 uu 拆为两个节点 u1,u2u_1,u_2 并用权值为 wuw_u 的边链接 u1,u2u_1,u_2,如果将边 u1u2u_1\to u_2 删除,那么就意味着帐篷 uu 被放弃掉了。

考虑将集合编号相邻且在图上曼哈顿距离为 11 的节点之间连边,具体的要将编号小的 x2x_2 向集合编号较大的 y1y_1 连边边权为 infinf 的边。

最后将 AA 集合内的所有点与 SS 连边,将 DD 集合内所有的点与 TT 连边,边权都是 infinf

显然,如果节点 a,b,c,da,b,c,d 是不合法的帐篷,那么它们显然会被边权为 infinf 的边全部连接起来,那么只有割掉任意一条边权不为 infinf 的边才可以使 S,TS,T 不连通。根据上面的解释,这也就是放弃了一个帐篷。

时间复杂度为 O(n3)O(n^3),但是是网络流。

Submission #278324197 - Codeforces