警示后人,以为水题,没算内存,MLE了,别铺地毯!
  • 板块P2105 K皇后
  • 楼主wan_le
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/13 15:54
  • 上次更新2024/8/13 17:34:05
查看原帖
警示后人,以为水题,没算内存,MLE了,别铺地毯!
1141389
wan_le楼主2024/8/13 15:54
#include<bits/stdc++.h>
 
using namespace std;
 
typedef unsigned long long ULL;
 
const int N = 2e4 + 10,P = 131;

int a[N][N];

int main()
{
	int n,m,k;cin>>n>>m>>k;
    
    while(k--)
    {
        int x,y;cin>>x>>y;
        for(int i=1;i<=m;i++)a[x][i]=1;
        for(int i=1;i<=n;i++)a[i][y]=1;
        int s1=abs(x-1),s2=abs(y-1),s3=abs(x-n),s4=abs(y-m);
        
        if(s1>=s2)//左上
        {
            for(int i=1;i<=s2;i++)a[x-i][y-i]=1;
        }
        else
        {
            for(int i=1;i<=s1;i++)a[x-i][y-i]=1;
        }
        
        if(s2>=s3)//右上
        {
            for(int i=1;i<=s3;i++)a[x+i][y-i]=1;
        }
        else
        {
            for(int i=1;i<=s2;i++)a[x+i][y-i]=1;
        }
        
        if(s3>=s4)//右下
        {
            for(int i=1;i<=s4;i++)a[x+i][y+i]=1;
        }
        else
        {
            for(int i=1;i<=s3;i++)a[x+i][y+i]=1;
        }
        
        if(s1>=s4)//左下
        {
            for(int i=1;i<=s4;i++)a[x-i][y+i]=1;
        }
        else
        {
            for(int i=1;i<=s1;i++)a[x-i][y+i]=1;
        }
        
    }
    int ans=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]==0)ans++;

    cout<<ans;
	return 0;
	
 } 
2024/8/13 15:54
加载中...