版权声明:转载请注明出处 https://blog.csdn.net/qq_41431457/article/details/88318931
题目描述
一个城市遭到了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
题目描述有误啊,大家千万要小心,那两个点不是右上到左下,是右下到左上啊,纯模拟,用不到线段树,数据水的一批
#include<bits/stdc++.h>
#define lom long long
#define maxn 1<<31
using namespace std;
lom m,n,ans=0,x,y,k=0;
int main()
{
ios::sync_with_stdio(false);
cin>>m>>n;
lom a[m+5],b[m+5],c[m+5],d[m+5];
for(lom i=0;i<m;i++)
cin>>a[i]>>b[i]>>c[i]>>d[i];
while(n--)
{
cin>>x>>y;
for(lom i=0;i<m;i++)
if(x>=a[i]&&x<=c[i]&&y>=b[i]&&y<=d[i])
k++, ans=i+1;
if(k==0) cout<<"NO"<<endl;
else cout<<"YES"<<' '<<k<<' '<<ans<<endl;
k=0;
}
return 0;
}