PAT 乙级 1053 住房空置率 (20)

1053. 住房空置率 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:

  • 在观察期内,若存在超过一半的日子用电量低于某给定的阈值e,则该住房为“可能空置”;
  • 若观察期超过某给定阈值D天,且满足上一个条件,则该住房为“空置”。

现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。

输入格式:

输入第一行给出正整数N(<=1000),为居民区住房总套数;正实数e,即低电量阈值;正整数D,即观察期阈值。随后N行,每行按以下格式给出一套住房的用电量数据:

K E1 E2 ... EK

其中K为观察的天数,Ei为第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户为“空置”,其他户不是空置。)

思路:因为每个用户观察的天数不确定,所以用柔性数组来做比较节省内存

 1 // 1053.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include<iostream>
 6 #include<iomanip>
 7 
 8 using namespace std;
 9 
10 struct user
11 {
12     int days;//柔性数组大小
13     double ele[];//柔性数组
14 };
15 
16 int main()
17 {
18     int N,D,may_empty=0,Empty=0,day;
19     double e;
20     user u;
21 
22     cin >> N >> e >> D;
23 
24     for (int i = 0; i < N; ++i)
25     {
26         cin >> u.days;
27 
28         double *p = new double[u.days];//为结构体的柔性数组分配空间
29 
30         day = 0;
31 
32         for (int j = 0; j < u.days; ++j)
33         {
34             cin >> p[j];
35 
36             if (p[j] < e)
37                 ++day;
38         }
39 
40         if (2 * day > u.days)//条件1
41         {
42             ++may_empty;
43 
44             if (D < u.days)//条件2
45                 ++Empty;
46         }
47 
48 
49         delete[] p;
50     }
51 
52     cout << setiosflags(ios::fixed) << setprecision(1) << 100.0 * (may_empty - Empty) / N << "% "
53         << setiosflags(ios::fixed)<< setprecision(1) << 100.0 * Empty / N << "%" << endl;
54 
55     return 0;
56 }
原文地址:https://www.cnblogs.com/cdp1591652208/p/7238794.html