PAT 1070 结绳
1070 结绳
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。
给定 N 段绳子的长度,你需要找出它们能串成的绳子的最大长度。
输入格式:
每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (2≤N≤104);第 2 行给出 N 个正整数,即原始绳段的长度,数字间以空格分隔。所有整数都不超过104。
输出格式:
在一行中输出能够串成的绳子的最大长度。结果向下取整,即取为不超过最大长度的最近整数。
输入样例:
8
10 15 12 3 4 13 1 15
输出样例:
14
思路:第一次做25分题这么快就写出来了,太意外了,这道题很简单,他需要在N段绳子中对折寻找最短的对折方式,越长的绳子越后对折,这样就可以减少对长绳子的损耗,所以先将N段绳子递增排序,在根据对折方式对折就可以得到答案。
//越长的绳子越后串对着减少的长度就大大减小
//先输入数组,将数组排序,之后一个一个对折 #include <stdio.h>
#include <stdlib.h>int compare(const void *a,const void *b){return *(int *)a-*(int *)b;
}int main(void){int n,i;scanf("%d",&n);int a[n];for(i=0;i<n;i++){scanf("%d",&a[i]);}qsort(a,n,sizeof(int),compare);int len=a[0];for(i=1;i<n;i++){len=(len+a[i])/2;}printf("%d\n",len);return 0;
}
2022.7.8
总结:这题还是很简单的,只要让越长的绳子对折的次数越少就可以得到最长的绳子(反之,则可以得到最短的绳子)
这题所学:想要使用qsort函数,在compare函数里面,你的数组类型是double,但是你在return那里写的是int类型,不会改变数组类型,还是double类型(但是在写代码的时候尽量规范)
只要对折一次就需要向下取整(向下取整的意思就是 5.2,只能取为5,与一个不超过原来值的最大整数)
#include <stdio.h>int compare(const void *a,const void *b){return *(float *)a-*(float *)b;
}int main(void){int n,i;scanf("%d",&n);float a[n],sum;for(i=0;i<n;i++) scanf("%f",&a[i]);qsort(a,n,sizeof(float),compare);sum=a[0];for(i=1;i<n;i++){sum=sum/2+a[i]/2; }printf("%d\n",(int)sum);return 0;
}
好好学习,天天向上!
我要考研! 缩小差距!
PAT 1070 结绳相关推荐
- PAT 1070 结绳 python
1070 结绳 (25 分) 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连. ...
- PAT 1070. 结绳(25)-乙级
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- PAT乙级 1070 结绳
PAT乙级 1070 结绳 #include<iostream> #include<algorithm> #include<vector> #include< ...
- PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642
PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...
- PAT 乙级 1070 结绳
1070 结绳 (25 point(s)) 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另 ...
- 1070. 结绳(25)
1070. 结绳(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一段一段的绳子,你需要把它们串成一条 ...
- C++学习之路 | PTA乙级—— 1070 结绳 (25 分)(精简)
1070 结绳 (25 分) 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连. ...
- 1070 结绳(贪心)
给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下图所示套接在一起.这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连.每次串连后,原来两段绳子的长度 ...
- python 1070 结绳 (25 分) 给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另
Python 1070 结绳 (25 分) 解题思路呢就是:长度很长的绳子如果一直对折只会越折越短而且短的相较长度不长的绳子要短得多,即长绳子对折比短绳子损耗的更多,如果要想获得最后尽可能长的绳子,就 ...
最新文章
- C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes
- 确实会玩!教你用Python玩转数据~
- Firefox开发者工具里的CSS Flexbox Inspector
- 数据结构与算法——选择排序
- 重学TCP协议(11)TFO(Tcp Fast Open)
- oracle之基本的sql_select语句之课后练习
- netty客户端源码
- OpenShift 4 - 使用教程和免费试用环境
- 利用SSL协议配置web服务器,基于windows2008平台配置实现利用SSL协议的安全IISWeb服务器汇总.doc...
- TCP/IP笔记 应用层(2)——FTP
- sql server 主键_SQL Server中人口过多的主键和CE模型的变化
- aiohttp保存MySQL_python链家网高并发异步爬虫asyncio+aiohttp+aiomysql异步存入数据
- ubuntu使用问题与解决记录[持续更新]
- 内嵌网页 UniWebView 3 的使用
- 计算机如何恢复记事本,如何使用电脑桌面便签恢复误删除了的记事本数据内容?...
- 带权图上的三个问题--最短路问题、中国邮递员问题与货郎担问题
- 计算机的内存时序参数,电脑内存条很重要的一个参数:时序
- OP-TEE中的线程管理(四)
- 如何用python进行数据处理?(二)
- 从视频中截取图像opencv python