zoukankan      html  css  js  c++  java
  • 洛谷—— P1847 轰炸II

    https://www.luogu.org/problemnew/show/1847

    题目背景

    本题为轰炸数据加强版

    题目描述

    一个城市遭到了M次轰炸,每次都炸了一个每条边都与边界平行的矩形

    在轰炸后,有N个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮。

    输入输出格式

    输入格式:

    第一行,两个整数:M,N

    以下M行,每行四个整数:x1、y1、x2、y2,表示被轰炸的矩形的左上角坐标和右下角坐标(比如1 3 7 10就表示被轰炸的地方是从(1,3)到(7,10)的矩形)。

    再以下N行,每行两个整数,表示这个关键点的坐标。

    输出格式:

    共N行,

    每行第一个字符为YES或NO,表示是否被轰炸,若为YES,在一个空格后为两个整数,表示被炸了几次和最后一次是第几轮。

    输入输出样例

    输入样例#1: 复制
    1 1 
    1 1 10 10
    11 11
    输出样例#1: 复制
    NO

    说明

    1<=N,M<=2000

    1<=x1,y1,x2,y2<=maxlongint

    类似铺地毯。

     1 #include <cstdio>
     2 
     3 inline void read(int &x)
     4 {
     5     x=0; register char ch=getchar();
     6     for(; ch>'9'||ch<'0'; ) ch=getchar();
     7     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
     8 }
     9 
    10 const int N(2333);
    11 
    12 int n,m;
    13 
    14 struct Node {
    15     int x1,x2,y1,y2;
    16 }a[N];
    17 
    18 inline void Work(int x,int y)
    19 {
    20     int pos,cnt=0;
    21     for(int i=1; i<=m; ++i)
    22       if(a[i].x1<=x&&a[i].x2>=x&&a[i].y1<=y&&a[i].y2>=y)
    23         cnt++,pos=i;
    24     if(!cnt) puts("NO");
    25     else printf("YES %d %d
    ",cnt,pos);
    26 }
    27 
    28 int Presist()
    29 {
    30     read(m),read(n);
    31     for(int i=1; i<=m; ++i)
    32         read(a[i].x1),read(a[i].y1),
    33         read(a[i].x2),read(a[i].y2);
    34     for(int x,y,i=1; i<=n; ++i)
    35         read(x),read(y),Work(x,y);
    36     return 0;
    37 }
    38 
    39 int Aptal=Presist();
    40 int main(int argc,char**argv){;}
  • 相关阅读:
    CodeForces 785D Anton and School
    CodeForces 785C Anton and Fairy Tale
    CodeForces 785B Anton and Classes
    CodeForces 785A Anton and Polyhedrons
    爱奇艺全国高校算法大赛初赛C
    爱奇艺全国高校算法大赛初赛B
    爱奇艺全国高校算法大赛初赛A
    EOJ 3265 七巧板
    EOJ 3256 拼音魔法
    EOJ 3262 黑心啤酒厂
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7862177.html
Copyright © 2011-2022 走看看