题意:$n*m$棋盘放置k个皇后,问几个格子不被攻击 1≤n,m≤20000,1≤k≤500

开set判重暴力$O(n*k)$然而,setMLE了QAQ

正解确实是$O(n*k)$的

以hang[i]记录此行是否被占用

用c[i]动态维护没被占用的行有几个安全的,(枚举皇后打标记)

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<set>
using namespace std;
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
int x[];
int y[];
bool hang[];
bool c[];
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int n;
int m;
int k;
int ans;
int main()
{
n=read();
m=read();
k=read();
for(int i=;i<=k;i++)
{
x[i]=read();
y[i]=read();
hang[x[i]]=true;
}
for(int i=;i<=n;i++)
{
if(!hang[i])
{
memset(c,,sizeof c);
int sum=m;
for(int j=;j<=k;j++)
{
if(!c[y[j]]) //枚举所占列,sum--
{
c[y[j]]=true;
sum--;
}
if(y[j]+x[j]-i>=&&y[j]+x[j]-i<=m&&!c[y[j]+x[j]-i]) //自己推一下,神奇的事情发生了! 这居然是皇后左下到右上对角线与当前行交点的y!!!!!!!
{
c[y[j]+x[j]-i]=true;
sum--;
}
if(y[j]-x[j]+i>=&&y[j]-x[j]+i<=m&&!c[y[j]-x[j]+i]) //这里是从右下到左上的交点
{
c[y[j]-x[j]+i]=true;
sum--;
}
}
ans+=sum; //统计安全~~~~~的
}
}
put(ans);
olinr ~~(^_^)+love_nmr;
}

P2105 K皇后的更多相关文章

  1. 洛谷 P2105 K皇后

    P2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的那一行,那 ...

  2. 洛谷P2105 K皇后

    To 洛谷.2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的 ...

  3. 洛谷2105 k皇后

    P2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的那一行,那 ...

  4. K皇后问题递归解法

      #include<iostream> #include<cmath> #include<ctime> using namespace std; bool che ...

  5. k皇后

    http://www.cnblogs.com/drizzlecrj/archive/2007/10/04/913703.html

  6. N皇后求解。万万没想到,只用一个一维数组就搞定了。还体现了回溯。

    一.啥是N皇后?先从四皇后入手 给定一个4x4的棋盘,要在棋盘上放置4个皇后.他们的位置有这样的要求,每一列,每一行,每一对角线都能有一个皇后. 你可能会对这个对角线有疑惑,其实就是每一个小正方形的对 ...

  7. 【Codeforces】Gym 101156G Non-Attacking Queens 打表

    题意 求$n\times n$的棋盘上放$3$个皇后使得互相不攻击的方案数 拓展是$m\times n$棋盘上放$k$皇后,暴力打表找到了公式 OEIS 代码 import java.math.Big ...

  8. 算法设计与分析——n后问题(回溯法+位运算)

    一.问题描述 在n×n格的国际象棋上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 二.算法设计 解n后问题的回溯算法描述如下: #include ...

  9. E. Yet Another Task with Queens(分类思想)

    \(\color{Red}{描述}\) \(在n*n的棋盘上有m个K皇后,每个皇后可能被来自8个方向的其他皇后攻击\) \(每个皇后只可能被(0-8)只皇后攻击,分别求出被(0-8)只皇后攻击的皇后数 ...

随机推荐

  1. 腾讯Web前端开发框架JX(Javascript eXtension tools)

    转自:Web前端开发-Web前端工程师 » 腾讯Web前端开发框架JX(Javascript eXtension tools) JX – Javascript eXtension tools 一个类似 ...

  2. 执行: python manage.py makemigrations报AttributeError: 'str' object has no attribute 'decode'

    找到错误代码(line146):query = query.encode(errors='replace') 解决方法:把decode改为encode即可.

  3. 将CDM中所有以Relatonship_开头的关系全部重命名,避免生成数据库因为重复关系名报错

    Option   Explicit ValidationMode   =   True InteractiveMode =   im_Batch Dim   mdl   '当前model '获取当前活 ...

  4. Drools学习笔记4—Consequence/RHS

    Right Hand Side,当LHS所有条件满足才会执行 可以使用LHS部分定义的绑定变量.全局变量.或者直接编写JAVA代码. 提供宏函数操作working memory fact对象,如ins ...

  5. 如何将DevExpress的Gridcontrol导出到Excel

    private void simpleButton1_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new S ...

  6. 关于contentprovider的几个问题

    说说ContentProvider与Android数据存储的关系? contentprovider是程序之间共享数据的唯一方式,android中没有公共数据区域的说法,每个进程启动都是不同的用户,与P ...

  7. eclipse格式化代码模板

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <profi ...

  8. mac上virtualBox的安装和使用

    一.下载和安装 去oracle官网下载mac版的virtualBox. 官网下载地址:https://www.virtualbox.org/. 下载好后按照向导进行安装即可. 二.使用方法 1.新建虚 ...

  9. Windows系统 为 QT5软件 搭建 OpenCV2 开发环境

    Windows系统 为 QT5软件 搭建 OpenCV2 开发环境 我们的电脑系统:Windows 10 64位 Qt5 软件:Qt 5. 7. 0 OpenCV2 版本:OpenCV2.4.10 1 ...

  10. python3-while与continue

    # Auther: Aaron Fan #要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue#执行continue语句,让python忽略余下的代码 #只打印1到10之间 ...