AT795题解
题意:
输入
分析
首先我们需要进行排序,排序之后从最大数向后取
code
#include<cstdio>
#include<cctype>
#include<algorithm>// sort 头文件
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch))// isdigit(x) 判断是否是数字字符,需调用 cctype 库
{
if (ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch))
{
x=x*10+(ch-'0');
ch=getchar();
}
return x*f;
}
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,k;
double c=0;//这里要用 double
n=read();k=read();
int a[n+1];//节省空间
for (int i=1;i<=n;i++) a[i]=read();
sort(a+1,a+n+1,cmp);
for (int i=k;i>=1;i--) c=(c+a[i])/2;//从第 k 大的数选取到最大的数
printf("%.6lf\n",c);//保留小数点后六位
return 0;//完美收官
}
总结
这个黄题并不难, sort 完全能过,我们只需要注意从第 吊打 AC 这道题了
另:三次提交均为最优解,这里附上链接: AC
三次记录 AC