当前位置:首页 > 题解目录 > 正文内容

【题解】增添战斗力

亿万年的星光8个月前 (04-25)题解目录793

【题目描述】

大战即将来临,杰洛特需要为自己增添战斗力,广袤的大陆有诸多豪杰,正好可以为杰洛特所用
    杰洛特分别有两处地方n1,n2需要豪杰的战斗力
    一共有n个豪杰,每一个豪杰拥有自己的战斗力pi,当然战斗力是越高越好,可是人人之间还是有差距的。
    因此两个城池决定,各自选出最高战斗力的算术平均值之和。

【输入描述】

第一组一个n表示拥有多少个豪杰,以及一个n1,n2分别表示城池需要的豪杰数
    接下来一行有n个数据分别表示各个豪杰的战斗力

【输出描述】

两个城池最大的战斗力算数平均值之和(结果保留6位小数)

【样例输入】

4 1 2
1 2 3 4

【样例输出】

6.500000



【题目分析】


1.贪心思想:让n值小的先加的大 

2.首先要求平均战斗力高,那挑选的肯定是高战力的,至于怎么分配另外讨论

3. 最大的那几个数分配给数量少的那个军队

4.小的那几个数分配给数量多的那个军队


【参考代码】

?#include<iostream>
#include<algorithm>
using namespace std;
int n,n1,n2;
int arr[10000];

int cmp(int a,int b) {
	return a>b;
}
int main() {
	double res1 = 0.0,res = 0.0;
	cin>>n>>n1>>n2;
	int nums = n1+ n2;
	for(int i = 0; i < n; i++) {
		cin>>arr[i];
	}
	//排序
	sort(arr,arr+n,cmp);
	int mini = min(n1,n2);
	for(int i = 0; i < (n1+n2); i++) {
		if(i<mini) {
			res1+=arr[i];
		}
		res += arr[i];
	}
	printf("%.6lf",(res1/mini) + (res-res1)/(n1+n2-mini));
	return 0;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】赢得比赛需要的最少训练时长

【题目描述】你正在参加一场比赛,给你两个 正 整数 initialEnergy 和 initialExperience 分别表示你的初始精力...

【题解】括号匹配问题

【题目描述】在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括...

【题解】采摘花生2

【题目描述】Hello Kitty又一次来到花生地里摘花生,从左上角进入花生地,从右下角出去,只能向右或者向下,请问Hello Kitty应该沿着什么样的路线走,能够摘到的花生数量最多(假设花生地里没...

【题解】大整数加法

【题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么...

素数个数

【题目描述】编程求2~n(n为大于2的正整数)中有多少个素数。【输入描述】输入n (2<= n <=50000)【输出描述】素数个数【输入样例】10【输出样例】4#include<i...

2021年青岛市程序设计竞赛试题(初中组)决赛

2021年青岛市程序设计竞赛试题(初中组)决赛

A.趣味三角(triangle.cpp) 【题目描述】 今天,新高一的OIer们第一次进入了机房。z老师想让他们喜欢上OI,于是给了他们每个人一个三角形。 这时候,小q秃发奇想,...