1修改成绩(91%)
/**
* 修改成绩
* 时间限制:C/C++语言 1000MS;其他语言 3000MS
* 内存限制:C/C++语言 65536KB;其他语言 589824KB
* 题目描述:
* 华老师的n个学生参加了一次模拟测验,考出来的分数很糟糕,但是华老师可以将成绩修改为[0,100]中的任意值,所以他想知道,如果要使所有人的成绩的平均分不少于X分,至少要改动多少个人的分数?
*
* 输入
* 第一行一个数T,共T组数据(T≤10)
*
* 接下来对于每组数据:
*
* 第一行两个整数n和X。(1≤n≤1000, 0≤X≤100)
*
* 第二行n个整数,第i个数Ai表示第i个学生的成绩。(0≤Ai≤100)
*
* 输出
* 共T行,每行一个整数,代表最少的人数。
*
*
* 样例输入
* 2
* 5 60
* 59 20 30 90 100
* 5 60
* 59 20 10 10 100
* 样例输出
* 1
* 2
*
* Hint
* 对于第一组数据,将59改成60即可
*/
function func(arr, X){
arr.sort((a1, a2)=>{
return a1 - a2;
});
var sum = 0;
for(var i = 0; i < arr.length; i++){
arr[i] = parseInt(arr[i]);
sum += arr[i];
}
for(var i = 0; i < arr.length; i++){
if(sum / arr.length >= X){
console.log(i);
return;
}
sum += 100 - arr[i];
}
return;
}
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
var curLine = 0;
var T = 0;
var n, X, arr = [];
rl.on('line', function (line) { // javascript每行数据的回调接口
if(curLine === 0){
T = parseInt(line.trim());
}else if(curLine % 2 === 1){
n = parseInt(line.trim().split(' ')[0]);
X = parseInt(line.trim().split(' ')[1]);
}else{
arr = line.trim().split(' ');
func(arr, X);
}
curLine++;
if(curLine / 2 > T){
rl.close();
}
});
2杀手(AC)
function func(arr){
var tmp, flag, cnt = 0;
while(arr.length > 1){
tmp = [arr[0]];
flag = true;
for(var i = 1; i < arr.length; i++){
if(arr[i] > arr[i-1]){
tmp.push(arr[i]);
}else{
flag = false;
}
}
if(flag){
break;
}
cnt++;
arr = tmp;
}
console.log(cnt);
}
var readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
var curLine = 0;
var n = 0, arr = [];
rl.on('line', function (line) {
if(curLine === 0){
n = parseInt(line.trim());
}else{
arr = line.trim().split(' ');
for(var i = 0; i < arr.length; i++){
arr[i] = parseInt(arr[i]);
}
func(arr);
rl.close();
}
curLine++;
});