(省事选拔系列---团体赛)God Save the i-th Queen

God Save the i-th Queen

Time Limit: 5000ms

Memory Limit: 65536KB

64-bit integer IO format: %lld      Java class name:
Main

Submit
Status PID: 4299

Did you know that during the ACM-ICPC World Finals a big chessboard is installed every year and is available for the participants to play against each other? In this problem, we will test your basic chess-playing abilities to verify that you would not
make a fool of yourself if you advance to the World Finals.

During the yesterday’s Practice Session, you tried to solve the problem of N independent rooks. This time, let’s concentrate on queens. As you probably know, the queens may move not only

horizontally and vertically, but also diagonally.

You are given a chessboard with i?1 queens already placed and your task is to find all squares that may be used to place the i-th queen such that it cannot be captured by any of the others.

Input

The input consists of several tasks. Each task begins with a line containing three integer numbers separated by a space:
X, Y , N. X and Y give the chessboard size, 1
≤ X, Y ≤20 000. N = i?1 is the number of queens already placed, 0
≤ N ≤ X·Y .

After the first line, there are N lines, each containing two numbers
xk, yk separated by a space. They give the position of the k-th queen, 1
≤ xk ≤ X, 1 ≤ yk ≤ Y
. You may assume that those positions are distinct, i.e., no two queens share the same square.

The last task is followed by a line containing three zeros.

Output

For each task, output one line containing a single integer number: the number of squares which are not occupied and do not lie on the same row, column, or diagonal as any of the existing queens.

Sample Input

8 8 2
4 5
5 5
0 0 0

Sample Output

20
题意:类似八皇后问题 给你一个 你n×m的棋盘
告诉你个皇后的位置 问你棋盘最后有多少个点不被攻击到
思路:
常规方法超内存
于是我们记录 每个皇后的攻击路线
如果point(ij)没有在攻击路线上 (原谅我不会上图。。。见代码吧 )
那么就从cnt++
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int x[40005],y[40005],ix[40005],iy[40005];
int main()
{
    int n,m,t;
    while(~scanf("%d%d%d",&n,&m,&t)&&n)
    {
        memset(x,0,sizeof(x));
        memset(y,0,sizeof(y));
        memset(ix,0,sizeof(ix));
        memset(iy,0,sizeof(iy));

        while(t--)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            x[a]=1;
            y[b]=1;
            ix[a+b]=1;
            iy[a+m-b]=1;
        }
        int cnt=0;
        for(int i = 1; i <= n; i++)
            for(int j = 1; j <= m; j++)
            {
                if(!x[i] && !y[j] && !ix[i+j] && !iy[i+m-j])
                {
                    cnt++;
                }
            }
        printf("%d\n",cnt);
    }
}

时间: 2024-10-14 01:08:43

(省事选拔系列---团体赛)God Save the i-th Queen的相关文章

(省赛选拔系列--团体赛) Arbitrage? (Floyd 优化)

A. Arbitrage? Time Limit: 5000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name:Main SubmitStatus PID: 4291 If you are going to travel to the World Finals, you cannot rely on Czech Crowns. You would have to exchange your mo

学习mongo系列(二) 新建数据库,collection ,insert(),save()

use user db show dbs db.dropDatabase() db.COLLECTION_NAME.insert(document) exp: db.user.insert({name:"user1",password:"123456"}) 提示:WriteResult({"nInserted":1})表示插入成功 db.user.find() 提示{ "_id" : ObjectId("56946f

暑期训练狂刷系列——Foj 1894 志愿者选拔 (单调队列)

题目连接: http://acm.fzu.edu.cn/problem.php?pid=1894 解题思路: 因为出队和入队都满足队列的性质,优先单调队列的优先级有进入队列的顺序和人品的高低,在一段区间中如果出现x[i]是最大的,那么[0,i-1]区间内的数就不用记录了,所以单调队列里面可以按照人品值降序排列,输出的时候判断一下当前元素是否已经出队即可. 1 #include <cstdio> 2 #include <cstring> 3 using namespace std;

[js高手之路]设计模式系列课程-组合模式+寄生组合继承实战新闻列表

所谓组合模式,就是把一堆结构分解出来,组成在一起,现实中很多这样的例子,如: 1.肯德基套餐就是一种组合模式, 比如鸡腿堡套餐,一般是是由一个鸡腿堡,一包薯条,一杯可乐等组成的 2.组装的台式机同理,由主板,电源,内存条,显卡, 机箱,显示器,外设等组成的 把一个成型的产品组成部件,分成一个个独立的部件,这种方式可以做出很多灵活的产品,这就是组合模式的优势 比如:家用台式机电脑,要求配置比较低, 这个时候只需要主板+电源+内存条+机箱+显示器+外设就可以了,不需要配置独立显卡 鸡腿堡+鸡翅+紫薯

机器学习系列(6)_从白富美相亲看特征预处理与选择(下)

作者:viewmode=contents">龙心尘 &&寒小阳 时间:2016年1月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50493845. http://blog.csdn.net/han_xiaoyang/article/details/50503115 声明:版权全部,转载请联系作者并注明出处 1. 剧情一:挑螃蟹的秘密 李雷与韩梅梅的关系发展得不错.趁国庆休假一起来天津玩. 今天,李雷十分

Spring Data 系列(三) Spring+JPA(spring-data-commons)

本章是Spring Data系列的第三篇.系列文章,重点不是讲解JPA语法,所以跑开了JPA的很多语法等,重点放在环境搭建,通过对比方式,快速体会Spring 对JPA的强大功能. 准备代码过程中,保持了每个例子的独立性,和简单性,准备的源码包,下载即可使用.如果,对JPA语法想深入研究的话,直接下载在此基础上进行测试. 前言 Spring Data 系列(一) 入门:简单介绍了原生态的SQL使用,以及JdbcTemplate的使用,在这里写SQL的活还需要自己准备. Spring Data 系

iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 转载:http://www.cnblogs.com/kenshincui/p/4186022.html#avFoundationCamera --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音

【高效程序员系列】2、别做机器人——让工作自动化

http://blog.csdn.net/jmshl/article/details/6764422 目录(?)[-] VS代码段的使用和定义 1Snippet Editor下载地址 Properties Code References Imports 2SnippetDesignerSetup-For VS2008msi下载地址 3SnippetDesigner-For VS2010vsix下载地址 代码段编译Snippet Compiler SQL智能提示和代码段 代码自动生成 脚本工具 1

lodash用法系列(5),链式

Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.min.js"></script>安装:npm install lodash 首先通过npm安装lodash:npm i --save lodash 在js文件中引用lodash:var _ =