PAT Basic 1053

Posted yxp400

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT Basic 1053相关的知识,希望对你有一定的参考价值。

1053 住房空置率

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

  • 在观察期内,若存在超过一半的日子用电量低于某给定的阈值 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户为“空置”,其他户不是空置。)

 

  题解:这道题算的是上一个良心题目了,细心点就能做对。

代码如下:

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int d,n,k,ans1 = 0, ans2 = 0;
 8     double e, result1, result2,m;
 9     scanf("%d %lf %d",&n, &e, &d);
10     for( int i = 0; i < n; i++){
11         scanf("%d",&k);
12         if( k <= d){
13             int num = 0;
14             for( int j = 0; j < k; j++){
15                 scanf("%lf",&m);
16                 if( m < e)
17                     num++;
18             }
19             if( num > k/2){
20                 ans1++;
21             }
22         }
23         else{
24             int num = 0;
25             for( int j = 0; j < k; j++){
26                 scanf("%lf",&m);
27                 if( m < e)
28                     num++;
29             }
30             if( num > k/2)
31                 ans2++;
32         }
33     }
34     result1 = ans1/(double)n*100;
35     result2 = ans2/(double)n*100;
36     printf("%.1lf%% %.1lf%%",result1,result2);
37     return 0;
38 }

 

以上是关于PAT Basic 1053的主要内容,如果未能解决你的问题,请参考以下文章

PAT Basic 1078

PAT 1053. Path of Equal Weight (30)

PAT 1053 Path of Equal Weight (30)

PAT 1053. 住房空置率

PAT 1053. Path of Equal Weight

PAT甲级1053 Path of Equal Weight (30 分)(DFS)