科大讯飞校招
修改成绩
时间限制: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即可
#include <iOStream>
#include<bits/stdc++.h>
using namespace std;
int cmp(int a,int b){
return a>b;
}
int main() {
int t;
cin>>t;
while(t--){
int n,m;
int sum=0;
cin>>n>>m;
int a[n];
int b[n];
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
b[i]=100-a[i];
}
sort(b,b+n,cmp);
int left=n*m-sum;
if(left<=0) cout<<0<<endl;
else{
int sum2=0;
int cnt=0;
for(int i=0;i<n;i++){
sum2+=b[i];
cnt++;
if(sum2>=left){
cout<<cnt<<endl;
break;
}
}
}
}
return 0;
}
题目二:杀手
时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:
有n个杀手排成一行,每个杀手都有一个不同的编号(编号为1-n),在每个夜晚,杀手都会行动,如果某个杀手编号大于他右边的杀手的编号,他就会杀死他右边的杀手,杀手是的行动是瞬间的,因此一个人可能某一个夜晚既杀死了别人又被别人杀死,例如3,2,1这个顺序,在第一个夜晚2会杀死1,同时3也会杀死2。
显而易见,一段时间之后,就不会有人杀或被杀,平安夜也就到来了,请问在平安夜之前有多少个夜晚。
输入
输入第一行是一个整数n(1≤n≤100000),表示杀手的数量。
接下来一行有n个数,是一个1-n的全排列。
输出
输出包含一个整数,表示平安夜之前经历了多少个夜晚。
样例输入
10 10 9 7 8 6 5 3 4 2 1
样例输出
2
Hint
补充样例
输入样例2: 6 1 2 3 4 5 6
输出样例2 :0
样例解释: 样例1中杀手的变化为[10 9 7 8 6 5 3 4 2 1]->[10 8 4]->[10],故答案为2。
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+5;
int cnt=0;
vector<int> a;
int x;
int main() {
int n,x;
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
a.push_back(x);
}
bool flag=true;
int cnt=0;
while(flag){
vector<int> next;
next.push_back(a[0]);
for(int i=1;i<a.size();i++){
if(a[i]>a[i-1]){
next.push_back(a[i]);
}
}
if(next.size()<a.size()){
cnt++;
a=next;
}
else flag=false;
}
cout<<cnt;
return 0;
}
附一个大佬的Python版本
"""
2
5 60
59 20 30 90 100
5 60
59 20 10 10 100
"""
groups = int(input())
for i in range(groups):
tmp = input().split()
people, score = int(tmp[0]), int(tmp[1])
tmp = input().split()
scores = [int(i) for i in tmp]
sums = sum(scores)
times = 0
while sums < people * score:
min_score = min(scores)
min_idx = scores.index(min_score)
sums += 100-min_score
times += 1
del scores[min_idx]
print(times)
"""
10
10 9 7 8 6 5 3 4 2 1
"""
people_num = int(input())
tmp = input().split()
slatters = [int(i) for i in tmp]
def existKill(slatters):
res = 0
kills_idx = []
for i in range(len(slatters)-1, 0, -1):
if slatters[i] < slatters[i-1]:
res += 1
kills_idx.APPend(i)
new_slatters = [slatters[i] for i in list(set([j for j in range(len(slatters))]) - set(kills_idx))]
return (res, new_slatters)
nights = 0
while existKill(slatters)[0]:
# print('old: ', slatters)
slatters = existKill(slatters)[1]
# print('new: ', slatters)
nights += 1
print(nights)
相关阅读
A5创业网(公众号:iadmin5)10.16日讯,近日媒体爆料称,科大讯飞的“科大讯飞观塘基地”涉及扬子鳄国家自然保护区被违规侵
【导读】云知声近期的频频亮相令其颇受关注。3月27日,在“锤子ROM”发布会上,云知声与老牌公司科大讯飞一起,同时入围了锤子科技的语
在中国,人工智能到底有多火爆?今年年初,科学家认为,在未来的30年之内,中国每4份工作会有3个由人工智能来替代。与此同时,科大讯飞董事长