给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。

给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度。

输入格式:

每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (2≤N≤10^​4);第 2 行给出 N 个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过10^​4。

输出格式:

在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。

输入样例:

8
10 15 12 3 4 13 1 15

输出样例:

14

AC1,虽然会AC但多次提交会出现超时,所以是伪AC

#include <stdio.h>
int main(){
int a,i,j;
scanf("%d",&a);
int m[a];
for(i=0;i<a;i++){
scanf("%d",&m[i]);
}
for(i=0;i<a;i++){//选择排序
int min=i;
for(j=i;j<a;j++){
if(m[j]<m[min]){
min=j;
}
}
if(min != i){
int num=m[i];
m[i]=m[min];
m[min]=num;
}
}
double sum=m[0];//计算结果
for(i=1;i<a;i++){
sum=(sum+m[i])/2;
}
printf("%d",(int)sum);
return 0;
}

AC2,采用快速排序省去一层for循环,时间复杂度极大降低,完美AC

#include<stdio.h>
int inc(const void *a, const void *b){
return *(int *)a - *(int *)b;
}
int main(){
int N,i;
scanf("%d",&N);
int arr[N];
for(i=0;i<N;i++){//输入数据
scanf("%d",&arr[i]);
}
qsort(arr,N,sizeof(int), inc);//升序排序
double total=arr[0];
for(i=1;i<N;i++){
total=(total+arr[i])/2;
}
printf("%d",(int)total);
return 0;
}

最新文章

  1. JavaScript for循环 闭包 【转】
  2. 总有一天会NB的! SB一样的坚持会有NB一样的结果的!
  3. SecureCrt设置字符编码
  4. HTML5 Web Storage -- 让Cookies看起来如此古老
  5. 编写跨平台代码之memory alignment
  6. eclipse - copy类的全名
  7. javaWeb RSA加密使用
  8. [Leetcode][Python]22: Generate Parentheses
  9. [ An Ac a Day ^_^ ] UVALive 2635 Housing Complexes 二分图最大匹配
  10. [SHOI2008]cactus仙人掌图
  11. LOJ.6060.[2017山东一轮集训Day1/SDWC2018Day1]Set(线性基)
  12. webstorm2018.2.3激活
  13. 【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置
  14. 谱聚类算法(Spectral Clustering)
  15. linux 软连接创建 压缩解压缩 linux的dns服务相关
  16. iOS开发之CoreImage
  17. vux, vue上拉加载更多
  18. ueditor 正在读取目录
  19. Android模仿三星手机系统滑动条滑动时滑块变大的特效
  20. OpenNebula学习第四节之磁盘镜像的制作

热门文章

  1. HDU3844 Mining Your Own Business
  2. 「HNOI2015」菜肴制作
  3. 网站的域名带www的和不带www的有什么区别呀
  4. 《attention is all you need》解读
  5. 从浏览器的url中获取查询字符串的参数
  6. xUtils框架的介绍(四)
  7. 深入java面向对象二:final关键字
  8. Python--day62--使用Bootstrap样式的出版社
  9. poj 3624 Charm Bracelet(01背包)
  10. H3C Easy IP配置举例