洛谷P2105 K皇后
题目描述
小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后。他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的。
(Ps:一个皇后会攻击到这个皇后所在的那一行,那一列,以及两条对角线)
输入输出格式
输入格式:
第一行三个正整数 n,m,K,表示棋盘的行列,以及小Z摆放了K个皇后。
接下来K行,每行两个正整数x,y,表示这个皇后被摆在了第x行,第y列,数据保证没有任何两个皇后会被摆在同一个格子里。
输出格式:
一行一个整数,表示棋盘上还有多少了格子是不会被攻击到的。
输入输出样例
12 13 6
10 4
12 10
1 1
2 3
3 2
2 6
25
说明
【数据规模和约定】
对于 30%的数据,1 ≤ n,m ≤ 5000,1 ≤ k ≤ 500。
对于另外 10%的数据,k =1。
对于 100%的数据,1 ≤ n,m ≤ 20000,1 ≤ k ≤ 500。
【时空限制】
1s/16M
代码:
#include<cstdio>
#include<cstring>
using namespace std;
const int N=;
const int K=; int n,m,k,Ans,X[K],Y[K];
bool vis[N]; void read(int &now)
{
now=;char c=getchar();
while(c>''||c<'')c=getchar();
while(c>=''&&c<='')now=(now<<)+(now<<)+c-'',c=getchar();
} int main()
{
read(n);read(m);read(k);
for(int i=;i<=k;++i)
read(X[i]),read(Y[i]);
for(int i=;i<=n;++i)
{
int tmp=m;
for(int j=;j<=k;++j)
{//枚举m列(20000)会超时,那就枚举k个棋子(500)
if(X[j]==i)
{//棋子j能吃到整一行,这一行不被攻击的棋子为0,退出循环
tmp=;break;
}
// int t1,t2;
// if(X[j]<Y[j])
// t1=Y[j],t2=X[j];
// else
// t1=X[j],t2=Y[j];
//以下是两条对角线判断。注意同一行同一个列只能判一次
if(Y[j]-X[j]+i> && Y[j]-X[j]+i<=m && !vis[Y[j]-X[j]+i])//or vis[XXX]!=i 可以不需要重设0
vis[Y[j]-X[j]+i]=,--tmp;//printf("tmp:%d-- on line%d,colu%d\n",tmp,i,X[j]-Y[j]+i);
if(X[j]+Y[j]-i> && X[j]+Y[j]-i<=m && !vis[X[j]+Y[j]-i])
vis[X[j]+Y[j]-i]=,--tmp;//printf("tmp:%d-- on line%d,colu%d\n",tmp,i,X[j]+Y[j]-i);
//列
if(!vis[Y[j]])
vis[Y[j]]=,--tmp;//printf("tmp:%d-- on line%d,colu%d\n",tmp,i,Y[j]);
if(!tmp)
break;
}
memset(vis,,sizeof vis);
Ans+= tmp;
// printf("On line%d Ans:%d\n",i,Ans);
}
printf("%d",Ans);
return ;
}
洛谷P2105 K皇后的更多相关文章
- 洛谷 P2105 K皇后
P2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的那一行,那 ...
- 洛谷2105 k皇后
P2105 K皇后 题目描述 小Z最近捡到了一个棋盘,他想在棋盘上摆放K个皇后.他想知道在他摆完这K个皇后之后,棋盘上还有多少了格子是不会被攻击到的. (Ps:一个皇后会攻击到这个皇后所在的那一行,那 ...
- 洛谷 P1219 八皇后【经典DFS,温习搜索】
P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...
- 洛谷 p1219 八皇后
刚参加完蓝桥杯 弱鸡错了好几道..回头一看确实不难 写起来还是挺慢的 于是开始了刷题的道路 蓝桥杯又名搜索杯 暴力杯...于是先从dfs刷起 八皇后是很经典的dfs问题 洛谷的这道题是这样的 上面的布 ...
- 洛谷P1219 八皇后【dfs】
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷2483 k短路([SDOI2010]魔法猪学院)
题目请戳这里 一句话题意: 给你一张n个节点,m条单向边的图,求1到n第k短的路. emmm,纪念第一个黑题(我是真的菜啊!!) 这题目还是很难的,本蒟蒻只会被洛谷卡掉的A(所以就愉快地特判了),首先 ...
- 【洛谷P1219 八皇后】
参考思路见白书(一本通) 题目链接 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上 ...
- 洛谷 P1219 八皇后题解
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- P2105 K皇后
题意:$n*m$棋盘放置k个皇后,问几个格子不被攻击 1≤n,m≤20000,1≤k≤500 开set判重暴力$O(n*k)$然而,setMLE了QAQ 正解确实是$O(n*k)$的 以hang[i] ...
随机推荐
- freeRTOS中文实用教程4--资源管理互斥
1.前言 访问一个被多任务共享,或是被任务与中断共享的资源时,需要采用”互斥”技术以保证数据在任何时候都保持一致性.这样做的目的是要确保任务从开始访问资源就具有排它性,直至这个资源又恢复到完整状态 F ...
- spring mvc常用配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL) 【转】
转自:http://blog.chinaunix.net/uid-23381466-id-3837650.html 内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数, ...
- C# 发送email邮件!
利用C#邮件发送邮箱使用到两个类SmtpClient和MailMessage.可以把SmtpClient看做发送邮件信息的客户端,而把MailMessage看做需要发送的消息. 下面是我写的发送邮件的 ...
- Linux查看文件命令
linux查看日志文件内容命令有 cat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写 nl 显示的时候,顺道输出行号! more 一页一页的显示文件内 ...
- Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe
VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microso ...
- UVA101 【The Blocks Problem】
一个大模拟!!! 总的来说就是碰到move就要把a上面的全部放回原处. 如果碰到onto就要把b上面的全部放到原处. 因为move是只移动a一个,所以a上面的要归位,而pile是移一堆,所以不用. o ...
- poj1470 LCA倍增法
倍增法模板题 #include<iostream> #include<cstring> #include<cstdio> #include<queue> ...
- CSS - !important声明强制优先
!important声明强制优先 CSS优先级中还有一个最无敌的声明,就是!important. 在CSS样式表中,带有!important声明的样式优先使用,它的优先级会超越任何地方.任何方式的样式 ...
- Linux 忘记了mysql 密码
killall mysqld /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & use mysql update user set ...