1 条题解

  • 0
    @ 2025-8-24 22:18:29

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar do_while_false
    **

    搬运于2025-08-24 22:18:29,当前版本为作者最后更新于2020-03-11 08:51:19,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    这题暴力枚举即可。

    直接记录,左右是 xx,上下是 yy,左上到右下是 xy+nx-y+n,右上到左下是 x+y1x+y-1,注意可能站在对手的位置射击。

    #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
    上传者