202009-2 风险人群筛查

题目链接:http://118.190.20.162/view.page?gpid=T112
题目解答:
因为在这次这次代码中,我使用到了bool类型,其实也完全不需要,但是正好想到了就用一下,就当复习以下。

第一次解答

第一次解答,我自己感觉为啥问题(我也没找出问题),样例也是对的,但是系统测试就是0,也没超时也没超内存。
如果有大佬看见了希望可以解答一下,不胜感激

#include <iostream>
using namespace std;
struct people{
	int x[1000];
	int y[1000];
};
//只要逗留了,就一定经过 
int main(){
	int n;//n位居民,n组数据
	int k;//连续 k个点在里面就算是逗留了
	int t;//一共t个时刻
	int xl,yd,xr,yu;//高危区域坐标 
	cin>>n>>k>>t>>xl>>yd>>xr>>yu; 
	int pass=0;//经过的人数
	int stay=0;//逗留的人数
	people peo[n];//n组数据
	int i,j;//用于循环的变量 
	bool sub[t];
	int temp=0;//用于和k进行比较 
	for(i=0;i<n;i++){
		//第一个都要进行提前判断
		cin>>peo[i].x[0]>>peo[i].y[0];
		if(peo[i].x[0]<xr+1&&peo[i].x[0]>xl-1&&peo[i].y[0]<yu+1&&peo[i].y[0]>yd-1){
			temp++;
			sub[0]=1;//1在高风险区域 
		} 
		else{
			sub[0]=0;//不在 
		}
		//开始后面的 
		for(j=1;j<t;j++){
			cin>>peo[i].x[j]>>peo[i].y[j];
			if(peo[i].x[j]<xr+1&&peo[i].x[j]>xl-1&&peo[i].y[j]<yu+1&&peo[i].y[j]>yd-1) {
				if(sub[j-1]==1) temp++; //前一个也在 
				else temp=1;//前一个不在 ,当前就是第一个 
				sub[j]=1;
			}
			else {//当前如果不在这个区域里面 
				sub[j]=0;
			}
		}//这个居民的这一波完成了,开始判断他的情况 
		if(temp>k-1) stay++;
		if(temp>0) pass++;
		temp=0;//然后开始下一个又全部清零 
	}
	cout<<pass<<endl<<stay; 
	return 0;
}

这是我可怜的测试结果
在这里插入图片描述

第二次解答

我参照了一下网上的一些大佬的写法。yysy他们真的又简洁又易懂,这就是差距吗。爱了爱了,然后我转化成自己的理解写了新的一个版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值