1.题目描述
2.解题思路
本题难点在于逗留的判断,逗留的意思是要该居民连续去过k次及以上的高危地区才算做逗留,所以我在这里定义了一个结构体,其中max_dl用来记录每次循环时该居民的最大连续逗留次数,最后与k进行大小比较判断该居民是否属于逗留。
3.代码实现
#include<iostream>
using namespace std;
struct person{
int jg; //经过高危地区的次数
int dl; //连续经过高危地区的次数
int max_dl; //最大连续经过高危地区的次数
};
int main()
{
int n,k,t,x1,y1,x2,y2;
cin>>n>>k>>t>>x1>>y1>>x2>>y2;
int sum_jg=0,sum_dl=0;
person per[n];
for(int i=0;i<n;i++)
{
per[i].jg = 0;
per[i].dl = 0;
per[i].max_dl = 0;
for(int j=0;j<t;j++)
{
int person_x,person_y;
cin>>person_x>>person_y;
if(person_x>=x1 && person_x<=x2 && person_y>=y1 && person_y<=y2)
{
per[i].jg++;
per[i].dl++;
if(per[i].dl > per[i].max_dl) per[i].max_dl = per[i].dl;
//找寻最大的连续经过次数,最后与k进行判断
}
else per[i].dl = 0;
}
if(per[i].jg>0) sum_jg++;
if(per[i].max_dl>=k) sum_dl++;
}
cout<<sum_jg<<endl<<sum_dl<<endl;
return 0;
}