202009-2 風險人群篩查
阿新 • • 發佈:2021-02-02
題目連結: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他們真的又簡潔又易懂,這就是差距嗎。愛了愛了,然後我轉化成自己的理解寫了新的一個版本