1 条题解
-
0
自动搬运
来自洛谷,原作者为

do_while_false
**搬运于
2025-08-24 22:18:29,当前版本为作者最后更新于2020-03-11 08:51:19,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这题暴力枚举即可。
直接记录,左右是 ,上下是 ,左上到右下是 ,右上到左下是 ,注意可能站在对手的位置射击。
#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; }
- 1
信息
- ID
- 5232
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者