一、题目部分
选自洛谷:
二、解题过程
思路
对于每个关键点,对每次轰炸的范围进行循环读入,若关键点处于轰炸范围内,说明该关键点被轰炸过,轰炸次数+1,并设置整型变量end存储最后一次轰炸的轮次,赋值为循环次数j即可保证轰炸的轮次为最后一次。
提交AC答案
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,x1[101],yy[101],x2[101],y2[101],mp[101][101];
struct direction
{
int dx;
int dy;
char flag;
int cnt;
int end;
};//关键点
direction d[102];
int main()
{
scanf("%d %d %d %d",&n,&m,&x,&y);
// for(int i=1;i<=n;i++)
// for(int j=1;j<=m;j++)
// mp[i][j]=1;
for(int i=1;i<=x;i++)
scanf("%d %d %d %d",&x1[i],&yy[i],&x2[i],&y2[i]);
for(int i=1;i<=y;i++)
scanf("%d %d",&d[i].dx,&d[i].dy);
for(int i=1;i<=y;i++)
{
d[i].flag='N';
for(int j=1;j<=x;j++)
{
for(int a=x1[j];a<=x2[j];a++)
{
for(int b=yy[j];b<=y2[j];b++)
{
if(d[i].dx==a&&d[i].dy==b)
{
d[i].flag='Y';
d[i].cnt+=1;
d[i].end=j;
}
}
}
}
}
for(int i=1;i<=y;i++)
{
if(d[i].flag=='N')
cout<<d[i].flag<<endl;
else
cout<<d[i].flag<<" "<<d[i].cnt<<" "<<d[i].end<<endl;
}
return 0;
}