luogu_2105 K皇后

#include <bits/stdc++.h>
using namespace std;
int n,m,k,x[510],y[510],f[20010],ans;

int main(){
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=k;i++)scanf("%d%d",&x[i],&y[i]);
    for(int i=1;i<=n;i++){
        int t=m;
        for(int j=1;j<=k;j++)
            if(i==x[j]){t=0; break;}
            else {
                if(f[y[j]]!=i){
                    f[y[j]]=i;
                    t--;
                }
                if ((i+y[j]-x[j])>0 && (i+y[j]-x[j])<=m && f[i+y[j]-x[j]]!=i){
                    f[i+y[j]-x[j]]=i;
                    t--;
                }
                if ((y[j]+x[j]-i)>0 && (y[j]+x[j]-i)<=m && f[y[j]+x[j]-i]!=i){
                    f[y[j]+x[j]-i]=i;
                    t--;
                }
            }
        ans+=t;
    }
    printf("%d
",ans);
    return 0;
}

 

原文地址:https://www.cnblogs.com/codetogether/p/9104536.html