题目连接:请点击
思路:本题按照题目要求,并不难。只是题中给出的字母条件较多,敲代码容易忘记哪个是哪个条件。比如,题中给出“观察期K”“给定阀值D天”,初试,就直接想当然地把K当成了D,结果第2,3测试点未过。
注1:printf()要想输出%需要写成两个%%才会输出一个%。
代码:
#include<iostream>
using namespace std;
int main(){
int N,D,mayEmpty=0,empty=0;
float e;
cin>>N>>e>>D;
for(int i=0;i<N;i++){
int K,lowEleDay=0;//lowEleDay表示低于给定电量阀值的天数
cin>>K;
for(int j=0;j<K;j++){
float ele;
cin>>ele;
if(ele<e) lowEleDay++;//低于电量e 则lowEleDay++
}
if(lowEleDay>K/2&&K<=D) mayEmpty++;
if(lowEleDay>K/2&&K>D) empty++;
}
printf("%.1f%% %.1f%%",(float)mayEmpty/N*100,(float)empty/N*100);//见注1 且由于答案可能是小数需要强转类型
return 0;
}