P3355 骑士共存问题
题目描述 在一个 n*n个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示。棋盘上某些方格设置了障碍,骑士不得进入 对于给定的 n*n 个方格的国际象棋棋盘和障碍标志,计算棋盘上最多可以放置多少个骑士,使得它们彼此互不攻击 输入格式 第一行有 2 个正整数n 和 m (1<=n<=200, 0<=m<n2),分别表示棋盘的大小和障碍数。接下来的 m 行给出障碍的位置。每行 2 个正整数,表示障碍的方格坐标。 输出格式 将计算出的共存骑士数输出 题解: 和 P4304 [TJOI2013]攻击装置 类似的题,这里懒得写了,双倍经验 AC代码: # pragma GCC optimize(2) # include <bits/stdc++.h> # include <ext/rope> using namespace std ; using namespace __gnu_cxx ; # define LL long long const int MAXN = 40000 + 50 ; const int MAXM = 2e6 + 50 ; const int MOD = 1e9 + 7 ; const int INF = 0x3f3f3f3f ; int n , m , s , t , tot = 1 , head [ MAXN ] , to [ MAXM ] , nxt