【题解】P6200
do_while_false · · 题解
这题暴力枚举即可。
直接记录,左右是
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=510,inf=1e9;
int n,k,x,y,z,tot,ans;
int row[maxn],col[maxn],lt[maxn],rt[maxn],map1[maxn][maxn];
inline int read() {//快读
int r=0;bool flag=true;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') flag=false;ch=getchar();}
while(ch>='0'&&ch<='9'){r=(r<<3)+(r<<1)+(ch^48);ch=getchar();}
return flag==true?r:~r+1;
}
int main(void) {
n=read();
k=read();
for(int i=1;i<=k;i++) {
x=read();
y=read();
map1[x][y]++;
row[x]++;col[y]++;lt[x-y+n]++;rt[x+y-1]++;
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(row[i]+col[j]+lt[i-j+n]+rt[i+j-1]-3*map1[i][j]==k)
ans++;
printf("%d\n",ans);
return 0;
}