1053 住房空置率 (20 分)
在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:
现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。
输入第一行给出正整数 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户为“空置”,其他户不是空置。)
表示这是一道水题,也是PAT考试的一贯特色,题目较长但是你看懂了就还好
按照要求模拟,空置的优先级更高,只要空置就不可能是可能空置,不满足空置在判断可能空置,很清楚~
最后注意输出格式就好
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#include<unordered_set>
#define rg register ll
#define inf 2147483647
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
#define ll long long
#define maxn 300005
#define lb(x) (x&(-x))
const double eps = 1e-6;
using namespace std;
inline ll read()
{
char ch = getchar(); ll s = 0, w = 1;
while (ch < 48 || ch>57) { if (ch == '-')w = -1; ch = getchar(); }
while (ch >= 48 && ch <= 57) { s = (s << 1) + (s << 3) + (ch ^ 48); ch = getchar(); }
return s * w;
}
inline void write(ll x)
{
if (x < 0)putchar('-'), x = -x;
if (x > 9)write(x / 10);
putchar(x % 10 + 48);
}
int main()
{
ll n=read(),cnt1=0,cnt2=0;
double a,b;
cin>>a>>b;
for(rg i=1;i<=n;i++)
{
ll x=read(),sum=0;
for(rg j=1;j<=x;j++)
{
double k;
cin>>k;
if(k<a)sum++;
}
if(sum>x/2&&x>b)
{
cnt2++;
continue;
}
if(sum>x/2&&x<=b)
{
cnt1++;
continue;
}
}
double a1=cnt1*1.0/n*100,a2=cnt2*1.0/n*100;
cout<<fixed<<setprecision(1)<<a1<<"% "<<a2<<"%"<<endl;
return 0;
}