题目

给定⼀段⼀段的绳⼦,你需要把它们串成⼀条绳。每次串连的时候,是把两段绳⼦对折,再如下图所示套接在⼀起。这样得到的绳⼦⼜被当成是另⼀段绳⼦,可以再次对折去跟另⼀段绳⼦串连。每次串

连后,原来两段绳⼦的⻓度就会减半。

给定N段绳⼦的⻓度,你需要找出它们能串成的绳⼦的最⼤⻓度。

输⼊格式:

每个输⼊包含1个测试⽤例。每个测试⽤例第1⾏给出正整数N (2<=N<=10^4);第2⾏给出N个正整数,即原始绳段的⻓度,数字间以空格分隔。所有整数都不超过104。

输出格式:

在⼀⾏中输出能够串成的绳⼦的最⼤⻓度。结果向下取整,即取为不超过最⼤⻓度的最近整数。

输⼊样例:

8

10 15 12 3 4 13 1 15

输出样例:

14

题目分析

已知一系列线段,两两衔接长度折半,求所有线段组成最长绳子的长度

解题思路

  1. 贪心算法:取当前最短的两个线段衔接,长度折半会最小
  2. 对所有线段长度进行升序排序
  3. 依次取两个线段进行衔接

易错点

  1. 长度累加变量,不能初始化为0,因为arr[0]要和arr[1]结合折叠,而不是0和arr[0]折叠

Code

Code 01

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main(int argc,char *argv[]) {
int N;
scanf("%d",&N);
int arr[N]={0};
for(int i=0; i<N; i++) {
scanf("%d", &arr[i]);
}
sort(arr,arr+N);
// double L=0.0; //不能从0开始,因为arr[0]要和arr[1]结合折叠,而不是0和arr[0]折叠
double L=arr[0];
for(int i=0; i<N; i++) {
L=(L+arr[i])/2.0;
}
printf("%d",(int)floor(L));
return 0;
}

PAT Basic 1070 结绳(25) [排序,贪⼼]的更多相关文章

  1. PAT Basic 1070 结绳 (25 分)

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

  2. PAT 乙级 1070 结绳(25) C++版

    1070. 结绳(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一段一段的绳子,你需要把它们串成一条 ...

  3. PAT乙级-1070. 结绳(25)

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

  4. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  5. PAT乙级:1070 结绳 (25分)

    PAT乙级:1070 结绳 (25分) 题干 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟 ...

  6. PAT(B) 1070 结绳(Java)

    题目链接:1070 结绳 (25 point(s)) 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子 ...

  7. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) (优先队列)

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

  8. PAT 1070. 结绳(25)

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

  9. 1070 结绳 (25 分)C语言

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

随机推荐

  1. 146-PHP 使用<<<和HTML混编(二)

    <?php $html=<<<HTM1 <title>PHP输出HTML代码</title> <body> <a href=#> ...

  2. SpringBoot学习(五)——Profile

    Profile是Spring对不同环境(例如开发人用开发环境,测试人员用测试环境)提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换环境 1.多profile文件形式 格式:applicat ...

  3. 【剑指Offer】面试题10- II. 青蛙跳台阶问题

    题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返 ...

  4. java反射的学习

    1.类的 类类型(ClassType) 类的类类型可以用来做很多事,我们可以通过它获取到类的名称,类的路径,类的成员变量,类的方法等等,还可以通过它获得类的实例化对象. 我们可以通过 类名.class ...

  5. 安卓app测试之Monkey日志分析《转载》

    安卓app测试之Monkey日志分析 链接:https://www.cnblogs.com/wuzm/p/10965762.html

  6. 安装双系统(win8+ubuntu16)

    一.参考网址 1.windows10安装ubuntu双系统教程(绝对史上最详细) 2.安装Windows+Ubuntu双系统 二.注意细节 1.怎么看自己电脑是MBR还是UEFI:win+r输入msi ...

  7. 春节宅家火了短视频,手游 APP 成最大赢家!

    春节历来是APP运营者翘首以盼的火热期,但2020年的春节有些特殊, 新型冠状病毒的爆发,牵动着全国亿万人民的心.响应号召不出门,宅在家里玩手机,于是打游戏.看新闻.追剧等成为大家打发时间.疏解内心压 ...

  8. 文献阅读报告 - Social GAN: Socially Acceptable Trajectories with Generative Adversarial Networks

    paper:Gupta A , Johnson J , Fei-Fei L , et al. Social GAN: Socially Acceptable Trajectories with Gen ...

  9. io流对数据的读写

    import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; i ...

  10. 代码review还是需要再仔细点-一次crash异常分析的总结

    版本发布之后,外网新增了一些crash, 从mini dump看,的确是有异常的,619行crash了. 代码如下: 奔溃的地方如下 可以看到是Zip add的时候指针空了, 为什么呢? 结合代码,可 ...