解题思路
对每组数据分别检查三项条件,满足任意一项即输出 Yes,否则输出 No。
先将读数排序。
- 中位数:若 n 为奇数,取 sn/2(下标从
0 开始);若 n 为偶数,取中间两个数的平均值并向下取整。判断是否不低于 a。等价地,偶数时可用 sn/2−1+sn/2≥2a。
- 全体平均数:判断 ∑si≥b⋅n。
- 去掉一个最高和一个最低后:判断 ∑si−max−min≥c⋅(n−2)。排序后最高、最低即两端元素。
题目内容
质检科要对若干批次进行达标判定。共有 T 组独立数据。每组给出 n 个测点读数 s1,s2,…,sn,以及三个阈值 a、b、c。只要满足下列三个条件中的任意一个,该批次即判定通过:
- 将读数从小到大排序后,中位数不低于 a。当 n 为奇数时,中位数为最中间那个数;当 n 为偶数时,中位数为中间两个数的平均值(向下取整)。
- 全体读数的算术平均数向下取整后不低于 b,即 ⌊n∑i=1nsi⌋≥b。
- 去掉一个最高读数和一个最低读数后,剩余读数的算术平均数向下取整后不低于 c,即 ⌊n−2(∑i=1nsi)−x−y⌋≥c,其中 x、y 分别为最高读数与最低读数。
约束:数据组数不超过 1000,每组测点个数不少于 3 且不超过 100,读数与阈值均不超过 100。
输入描述
第一行一个正整数 T,表示数据组数。
每组数据格式如下:
第一行一个正整数 n,表示测点个数;
第二行 n 个整数 s1,s2,…,sn,表示各测点读数;
第三行三个整数 a、b、c,表示三项阈值。
保证 1≤T≤1000,3≤n≤100,0≤si,a,b,c≤100。
输出描述
对每组数据输出一行:若该批次通过,输出 Yes;否则输出 No。
样例1
输入
1
3
0 0 0
1 1 1
输出
No
说明
三个读数都是 0,阈值都是 1。中位数、全体平均、去极值平均均为 0,三项都不达标,输出 No。这是全零读数的边界情形。
样例2
输入
1
4
10 20 30 40
25 25 25
输出
Yes
说明
n=4 为偶数,中位数为 (20+30)/2=25,恰好不低于 a=25。
因此第一项条件成立,输出 Yes。
样例3
输入
1
3
0 0 0
2 2 2
输出
No
说明
按题意模拟计算得到。