CSP202009-2 風險人群篩查

m0_48128118發表於2020-11-29

CSP202009-2 風險人群篩查@TOC


題目背景

某地疫情爆發後,出於“應檢盡檢”的原則,我們想要通知所有近期經過該高危區域的居民參與核酸檢測。


一、問題描述

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201129123838441.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ4MTI4MTE4,size_16,color_FFFFFF,t_70) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/2020112912393666.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ4MTI4MTE4,size_16,color_FFFFFF,t_70) ![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201129123950562.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ4MTI4MTE4,size_16,color_FFFFFF,t_70)

二、程式碼

程式碼如下:

#include <iostream>
using namespace std;

struct People{
	int x[1000];
	int y[1000];
}p[25];

int main (){
	int n, k, t, Xl, Yd, Xr, Yw;
	cin >> n >> k >> t >> Xl >> Yd >> Xr >> Yw;
	int passNum = 0, stayNum = 0, tempNum = 0;
	bool flag = false;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < t; j++){
			cin >> p[i].x[j] >> p[i].y[j];
		}
	}
	for(int i = 0; i < n; i++){
		tempNum = 0;
		flag = false;
		for(int j = 0; j < t; j++){
			if(p[i].x[j] >= Xl && p[i].x[j] <= Xr){
				if(p[i].y[j] >= Yd && p[i].y[j] <= Yw){
					flag = true;
					tempNum++;
					if(tempNum >= k){
						stayNum++;
						break;
					}
				}
				else{
					tempNum = 0;
				}
			}
			else{
				tempNum = 0;
			}
		}
		if(flag){
			passNum++;
		}
	}
	cout << passNum << endl;
	cout << stayNum;
	return 0;
} 

總結

解答的時候最好採取 先判斷是否符合高危的條件 再判斷是否符合經過的條件 雜糅在一起判斷容易出錯(博主就錯在這裡,還一臉懵逼) 第二題難度係數較低emmm

相關文章