zoukankan      html  css  js  c++  java
  • P2105 K皇后

    传送门

    非常简单的一道暴力

    看到n和m都是(10^4)级别就应该想到了

    开始的想法是开个bool类型的n*m的数组,根据K个皇后用筛法筛掉被攻击的格子,筛掉一个ans--

    其实不用这样。枚举每一行,枚举皇后,只开m容量的标记数组。

    把这一行的格子筛去统计答案,这样空间也不会爆。也就是第一次筛去某个格子就ans--。筛完一行就清空标记数组。

    其实不必这样。我们可以开int类型的数组,每次不标记成1,标记成当前的行数,这样可以不清空也不会影响判断。

    #include <bits/stdc++.h>
    using namespace std;
    int n,m,k,a[509],b[509];
    bool x[20009],y[20009],flag[200009];
    int main()
    {
    	cin>>n>>m>>k;
    	for(int i=1;i<=k;i++)
    	{
    		cin>>a[i]>>b[i];
    		x[a[i]]=y[b[i]]=1;//也许没有什么用?? 
    	}
    	int ans=0;
    	for(int i=1;i<=n;i++)
    	{
    		if(x[i])	continue;
    		int p=m;
    		for(int j=1;j<=k;j++)
    		{
    			if(flag[b[j]]==0)	flag[b[j]]=1,p--;
    			int z=b[j]-a[j]+i;
    			if(z>=1&&z<=m&&flag[z]==0)	flag[z]=1,p--;
    			z=2*b[j]-z;
    			if(z>=1&&z<=m&&flag[z]==0)	flag[z]=1,p--;
    		}
    		ans+=p;
    		memset(flag,0,sizeof(flag));//可以开int的
    	}
    	cout<<ans;
    }
    
  • 相关阅读:
    常用FPGA功能块记录
    鸿蒙相关
    微波相关
    Python库大全
    C#环境实现代码的自动生成编译
    STM32相关
    硬件相关
    C# 获取枚举中文注释
    C# 获取自定义特性值
    Asp.Net Core 中 Host 与 WebHost的区别
  • 原文地址:https://www.cnblogs.com/iss-ue/p/12776789.html
Copyright © 2011-2022 走看看