天天看點

【PAT】(B)1053 住房空置率 (20)*

『題目』

在不打擾居民的前提下,統計住房空置率的一種方法是根據每戶用電量的連續變化規律進行判斷。判斷方法如下:

  • 在觀察期内,若存在超過一半的日子用電量低于某給定的門檻值e,則該住房為“可能空置”;
  • 若觀察期超過某給定門檻值D天,且滿足上一個條件,則該住房為“空置”。

現給定某居民區的住戶用電量資料,請你統計“可能空置”的比率和“空置”比率,即以上兩種狀态的住房占居民區住房總套數的百分比。

輸入格式:

輸入第一行給出正整數N(<=1000),為居民區住房總套數;正實數e,即低電量門檻值;正整數D,即觀察期門檻值。随後N行,每行按以下格式給出一套住房的用電量資料:

K E~1~ E~2~ ... E~K~

其中K為觀察的天數,E~i~為第i天的用電量。

輸出格式:

在一行中輸出“可能空置”的比率和“空置”比率的百分比值,其間以一個空格分隔,保留小數點後1位。

輸入樣例:

5 0.5 10
6 0.3 0.4 0.5 0.2 0.8 0.6
10 0.0 0.1 0.2 0.3 0.0 0.8 0.6 0.7 0.0 0.5
5 0.4 0.3 0.5 0.1 0.7
11 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
11 2 2 2 1 1 0.1 1 0.1 0.1 0.1 0.1
           

輸出樣例:

40.0% 20.0%
           

(樣例解釋:第2、3戶為“可能空置”,第4戶為“空置”,其他戶不是空置。)

『思路』

依然是比較簡單的模拟題,(可能作為一個蒟蒻我隻能寫一些簡單題)按要求輸入,求出“可能空置”的總數summ,在“可能空置”的基礎上,判斷是否“空置”,記錄總數sum,最後用summ - sum 可以去掉重複的部分,用summ/N*100,sum/N*100在加上%就好。

『AC代碼』

#include <bits/stdc++.h>
using namespace std;
int main(){
	int N,D;
	double e,summ = 0,sum = 0;
	cin>>N>>e>>D;
	//cout<<N<<" "<<e<<" "<<D<<endl; 
	for(int i = 0; i < N; i++){
		int n;
		cin>>n;
		//cout<<"n="<<n<<endl;
		double ee[n + 1],count = 0,flag = 0;
		for(int j = 0; j < n; j++){
			cin>>ee[j];
			//cout<<ee[j]<<" ";
			if(ee[j] < e)//如果有低于給定阙值的 +1 
				count++;//低于阙值的總天數 
		}
		if(count > n/2){
			summ++;//如果 可能空置就+1 
			flag= 1;//标志可能空置 
			//cout<<flag<<endl;
		}
		if(n > D && flag){
			sum++; //如果空置就 +1 
		}
	}
	summ = summ - sum;
	//cout<<"summ="<<summ<<"   sum="<<sum<<endl;
	double mans = summ/N;
	double ans = sum/N;
	mans*=100;
	ans*=100;
	printf("%.1lf" ,mans) ;
	cout<<"%";
	printf(" %.1lf",ans);
	cout<<"%";
	return 0;
}