PAT Basic 1070 结绳(25) [排序,贪⼼]
题目
给定⼀段⼀段的绳⼦,你需要把它们串成⼀条绳。每次串连的时候,是把两段绳⼦对折,再如下图所示套接在⼀起。这样得到的绳⼦⼜被当成是另⼀段绳⼦,可以再次对折去跟另⼀段绳⼦串连。每次串
连后,原来两段绳⼦的⻓度就会减半。
给定N段绳⼦的⻓度,你需要找出它们能串成的绳⼦的最⼤⻓度。
输⼊格式:
每个输⼊包含1个测试⽤例。每个测试⽤例第1⾏给出正整数N (2<=N<=10^4);第2⾏给出N个正整数,即原始绳段的⻓度,数字间以空格分隔。所有整数都不超过104。
输出格式:
在⼀⾏中输出能够串成的绳⼦的最⼤⻓度。结果向下取整,即取为不超过最⼤⻓度的最近整数。
输⼊样例:
8
10 15 12 3 4 13 1 15
输出样例:
14
题目分析
已知一系列线段,两两衔接长度折半,求所有线段组成最长绳子的长度
解题思路
- 贪心算法:取当前最短的两个线段衔接,长度折半会最小
- 对所有线段长度进行升序排序
- 依次取两个线段进行衔接
易错点
- 长度累加变量,不能初始化为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) [排序,贪⼼]的更多相关文章
- PAT Basic 1070 结绳 (25 分)
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- PAT 乙级 1070 结绳(25) C++版
1070. 结绳(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一段一段的绳子,你需要把它们串成一条 ...
- PAT乙级-1070. 结绳(25)
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...
- PAT乙级:1070 结绳 (25分)
PAT乙级:1070 结绳 (25分) 题干 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟 ...
- PAT(B) 1070 结绳(Java)
题目链接:1070 结绳 (25 point(s)) 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子 ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) (优先队列)
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- PAT 1070. 结绳(25)
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- 1070 结绳 (25 分)C语言
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
随机推荐
- POJ 2104 求序列里第K大 主席树裸题
给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么 只有询问,没有修改 可以用归并树和划分树(我都没学过..囧) 我是专门冲着弄主席树来的 对主席树的建树方式有点了解了,不过这题为 ...
- Eclipse中jsp、js文件编辑时,卡死现象解决汇总(转)
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 win ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-tags
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- java基础源码 (2)--StringBuilder类
Serializable(接口): 是一个IO的序列化接口,实现了这个接口,就代表这个类可以序列化或者反序列化,该接口没有方法或者字段,仅用于标识可串行话的语义. Appendable(接口): /* ...
- 【Android】家庭记账本手机版开发报告七
一.说在前面 昨天 实现了账单的图标显示 今天 本地化,测试APP,将工程源码放到github上 源码:https://github.com/xiaotian12-call/Android_Boo ...
- blkid命令 获取文件系统类型、UUID
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询.blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型.LABEL.UUID等信息进行查询.要使用这个命令必须 ...
- 资源的合并与压缩-html压缩
资源的合并:减少http请求数量 资源的压缩:减少请求资源的大小 html压缩 html代码压缩就是压缩这些在文本文件中有意义,但是在html中不显示的字符,包括空格,制表符,换行符等,还有一些其他意 ...
- GitHub Token for composer
a2248520cdd2b1d27c2c70741003b9078530d81c
- RN命令的使用
RN中文网站 https://reactnative.cn/docs/getting-started/ 创建项目 1.最新版本项目react-native init MyApp 使用可行版本 rea ...
- Python获取桌面路径
第一种: import winreg def get_desktop(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Micr ...