1070 结绳(25 分)

2023-11-03

1070 结绳(25 分)

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

rope.jpg

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

输入格式:

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

输出格式:

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

输入样例:

8
10 15 12 3 4 13 1 15

输出样例:

14

解题思路:给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。若想要得到最大长度,就每次将这些数从小到大排序,每次取出两个最小的数,两数取半相加再放入这些数中,直到只剩下一个数为止(类似于哈夫曼算法)。

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int i,n;
	double A;
	priority_queue<double,vector<double>, greater<double> > s;     //用优先数列存放这些数 
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		double x;
		scanf("%lf",&x);
		s.push(x);          //存放到优先数列中 
	}
	while(!s.empty()&&s.size()!=1)     //直到数列中只剩下一个数中为止 
	{
		double t=s.top();   //t为最小的数 
		s.pop();            //让其出数列 
		double k=s.top();   //k为次小的数 
		s.pop();
		A=t/2+k/2;          //A为两数取半之和 
		s.push(A);          //让A入队列 
	}
	printf("%d",(int)A);    //最后输出最后一个数 
	return 0;
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1070 结绳(25 分) 的相关文章

  • 【PTA】判断一个数是否为回文数

    1 题目 如果一个数与它的反转数相等 则该数为回文数 输入一个数 判断是否为回文数 输入格式 输入一个数 输出格式 若XX是回文数 则输出 XX 是回文数 若不是 则输出 XX 不是回文数 输入样例1 6234326 输出样例1 62343
  • 根据后序或者前序 + 中序建树的多种方法!

    根据 后序or前序 中序 建树的多种方法 以下例子都是实战题 值得收藏 值的学习 1 堆的方式 完全二叉树 利用了完全二叉树的特性 根结点i的孩子结点左孩子为2i 右孩子为2i 1 注意此时i是从1开始编号 但是每棵子树的根结点没有直接给出
  • Basic Level 1061 判断题 (15分)

    题目 判断题的评判很简单 本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分 输入格式 输入在第一行给出两个不超过 100 的正整数 N 和 M 分别是学生人数和判断题数量 第二行给出 M 个不超过 5 的正整数 是每道题的满分
  • 【PTA】A-B

    本题要求你计算A B 不过麻烦的是 A和B都是字符串 即从字符串A中把字符串B所包含的字符全删掉 剩下的字符组成的就是字符串A B 输入格式 输入在2行中先后给出字符串A和B 两字符串的长度都不超过104 并且保证每个字符串都是由可见的AS
  • L1-077 大笨钟的心情 - java

    L1 077 大笨钟的心情 Java javac 时间限制 600 ms 内存限制 64 MB 其他编译器 时间限制 400 ms 内存限制 64 MB 题目描述 有网友问 未来还会有更多大笨钟题吗 笨钟回复说 看心情 本题就请你替大笨钟写
  • L1-018 大笨钟(Python3)

    微博上有个自称 大笨钟V 的家伙 每天敲钟催促码农们爱惜身体早点睡觉 不过由于笨钟自己作息也不是很规律 所以敲钟并不定时 一般敲钟的点数是根据敲钟时间而定的 如果正好在某个整点敲 那么 当 数就等于那个整点数 如果过了整点 就敲下一个整点数
  • PAT (Basic Level) Practice 1018 锤子剪刀布

    大家应该都会玩 锤子剪刀布 的游戏 两人同时给出手势 胜负规则如图所示 现给出两人的交锋记录 请统计双方的胜 平 负次数 并且给出双方分别出什么手势的胜算最大 输入格式 输入第 1 行给出正整数 N 10 5 即双方交锋的次数 随后 N 行
  • Basic Level 1091 N-自守数 (15分)

    题目 如果某个数 K 的平方乘以 N 以后 结果的末尾几位数等于 K 那么就称这个数为 N 自守数 例如 3 9 2 2 25392
  • PTA 7-100 敲笨钟 (20 分)(C语言版)

    微博上有个自称 大笨钟V 的家伙 每天敲钟催促码农们爱惜身体早点睡觉 为了增加敲钟的趣味性 还会糟改几句古诗词 其糟改的方法为 去网上搜寻压 ong 韵的古诗词 把句尾的三个字换成 敲笨钟 例如唐代诗人李贺有名句曰 寻章摘句老雕虫 晓月当帘
  • 7-6 素因子分解(20 分)

    7 6 素因子分解 20 分 给定某个正整数 N 求其素因子分解结果 即给出其因式分解表达式 N p 1 k 1 p 2 k 2 p m k m 输入格式 输入long int范围内的正整数 N 输出格式 按给定格式输出N的素因式分解表达式
  • 7-2 计算工资数 (10 分) PTA JAVA

    某公司标准上班时间是120小时 每小时工钱是20元 如果上班时间超出了120小时 超出部分每小时按2倍工资发放 请编写程序计算员工月工资 输入格式 输入一个员工的工作小时数 输出格式 输出这个员工的工资数 输入样例 在这里给出一组输入 例如
  • Advanced Level 1001 A+B Format (20 point(s))

    PAT甲级系列 PAT Advanced Level 文章目录 英文 Title Input Specification Output Specification Sample Input Sample Output 中文 题目 输入格式
  • 科学计数法 C语言

    题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法 其满足正则表达式 1 9 0 9 E 0 9 即数字的整数部分只有 1 位 小数部分至少有 1 位 该数字及其指数部分的正负号即使对正数也必定明确给出 现以科学计数法的格式给
  • Basic Level 1037 在霍格沃茨找零钱 (20分)

    题目 如果你是哈利 波特迷 你会知道魔法世界有它自己的货币系统 就如海格告诉哈利的 十七个银西可 Sickle 兑一个加隆 Galleon 二十九个纳特 Knut 兑一个西可 很容易 现在 给定哈利应付的价钱 P 和他实付的钱 A 你的任务
  • Basic 1047 编程团体赛 (20分)

    题目 编程团体赛的规则为 每个参赛队由若干队员组成 所有队员独立比赛 参赛队的成绩为所有队员的成绩和 成绩最高的队获胜 现给定所有队员的比赛成绩 请你编写程序找出冠军队 输入格式 输入第一行给出一个正整数 N 1 0 4
  • jmu-python-随机生成密码(一行代码生成题目要求的字符列表)

    jmu python 随机生成密码 题目 答案 初始版 优化版 一行代码生成题目要求的字符列表 总结 题目 答案 初始版 import random x eval input n eval input m eval input str ab
  • 【PTA】 试试手气

    我们知道一个骰子有 6 个面 分别刻了 1 到 6 个点 下面给你 6 个骰子的初始状态 即它们朝上一面的点数 让你一把抓起摇出另一套结果 假设你摇骰子的手段特别精妙 每次摇出的结果都满足以下两个条件 1 每个骰子摇出的点数都跟它之前任何一
  • Advanced Level 1006 Sign In and Sign Out (25 point(s))

    题目 At the beginning of every day the first person who signs in the computer room will unlock the door and the last one w
  • PTA L1-058 6翻了(详解)

    前言 内容包括 题目 代码实现 大致思路 代码解读 题目 666 是一种网络用语 大概是表示某人很厉害 我们很佩服的意思 最近又衍生出另一个数字 9 意思是 6翻了 实在太厉害的意思 如果你以为这就是厉害的最高境界 那就错啦 目前的最高境界
  • Basic Level 1025 反转链表 (25分)

    题目 给定一个常数 K 以及一个单链表 L 请编写程序将 L 中每 K 个结点反转 例如 给定 L 为 1 2 3 4 5 6 K 为 3 则输出应该为 3 2 1 6 5 4 如果 K 为 4 则输出应该为 4 3 2 1 5 6 即最后

随机推荐

  • linux 怎么样复制文件夹内所有文件到另一个文件夹?

    cp Rf home user1 root temp 将 home user1目录下的所有东西拷到 root temp 下而不拷贝user1目录本身 即格式为 cp Rf 原路径 目的路径
  • 集成底座双K8S集群扩展升级方案

    集成底座方案是应用于企业信息化建设的集成整合阶段 通过建立统一 标准 柔性 可复用 可扩展的IT架构 解决企业信息化建设过程中缺乏整体规划 集成整合难度大 安全管控不到位等问题 强化企业信息化的架构建设 集成整合 数据治理 安全管控的水平
  • 腾讯测开笔试题

    测开笔试题分享 一个数组里面有混序的正负数 按照以下要求重新排列 1 按照正负间隔的顺序排列 2 同一个符号的数相对顺序不变 3 若某一个符号的数较多 按原顺序放在最后 例如输入 1 2 3 7 9 5 3 4 7 8 11 3 2 期望输
  • .Net WinForm 中关于输入法打开却无法输入中文总结

    根据前面的兄弟们解决方法我做了下总结 希望对以后遇到此问题的同行提供点帮助 大家如果还有好的方法也请回复提供我 共同学习 出现这个问题时我的输入法设置为 注意我这里使用简体中文美式键盘 然后我删除了简体中文美式键盘 添加了英语 美国 美式键
  • Git命令语句

    一 关于Git 1 Git介绍 Git是一个开源的分布式版本控制系统 用于敏捷高效的处理任何或大或小的项目 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件 版本控制 版本控制是一种在开发
  • Android ActionBar的基本用法

    本文翻译了这篇文章 Using the Android action bar ActionBar Tutorial 1 ActionBar的简介 ActionBar位于Activity的顶部 可用来显示activity的标题 Icon Ac
  • 一周AI看点

    本期一周AI看点包括 技术前沿 行业 观点 应用以及投融资等方面 技术前沿 CCAI 2017 香港科技大学计算机系主任杨强 论深度学习的迁移模型在7月22 23日举办的CCAI 2017上 香港科技大学计算机与工程系主任 AAAI Fel
  • 案例:使用seaborn分析泰坦尼克号生还者数据

    目录 一 数据来源 数据的导入 二 主要分析的内容 定义问题 泰坦尼克号乘客基本信息分布情况 乘客的信息与生还数据是否有关联 三 数据清洗 3 1 查看是否有缺失值 3 2 查看数据基本信息 3 3 绘制年龄分布图 通过seaborn的di
  • 学习笔记-架构的演进之k8s的存储生态系统-3月day11

    文章目录 前言 块存储 文件存储 对象存储 总结 附 前言 随着 Kubernetes 的 CSI 规范成为容器业界统一的存储接入标准 现在几乎所有的云计算厂商都支持自家的容器通过 CSI 规范去接入外部存储 能够应用于 CSI 与 Fle
  • 获取JSON里面result的值 以及将里面的(List数组或对象)转换出来并读取到

    前言 记录一下今天的问题 首先我是在定时任务了 每次当项目启动时都需要调用别人的接口他来返回我数据 我并获取到他的数据进行同步更新 到我的数据库表里 那么怎么获取到呢 下面废话不多说 这是我打印出 返回给我的数据 为虚构数据 仅参考 suc
  • 2.深入了解bind函数

    bind函数 1 查看方法 2 详细解说 中文 bind函数 3 bind文档 1 查看方法 使用指令 man bind 2 详细解说 中文 bind函数 1 功能 bind函数把一个本地协议地址赋予一个套接字 对于网际网协议 协议地址是3
  • C# 集合总结

    1 Array ArrayList List lt 类型 gt 数组 连续分配的 查询速度快 但增删不方便 region 链表 2 LinkedList lt 类型 gt LinkedListNode lt 类型 gt 链表 非连续分配 每
  • 第33章_瑞萨MCU零基础入门系列教程之DHT11温湿度获取实验

    本教程基于韦东山百问网出的 DShanMCU RA6M5开发板 进行编写 需要的同学可以在这里获取 https item taobao com item htm id 728461040949 配套资料获取 https renesas do
  • LeetCode最长回文子串

    题目 给你一个字符串 s 找到 s 中最长的回文子串 思路 回文串是正着读与倒着读是一样的字符串 如 aaaccaaa abcba 可以发现其最大的特点就是对称 也就有一个对称中心 所以我们可以将字符串s的每个字符都设为对称中心 由中心向两
  • vue中引入百度地图

    vue中引入百度地图 一 通过vue注册的方式引入 注 vue百度地图官网 安装百度地图 npm install vue baidu map save 引入 使用百度地图首先需要去百度地图开放平台申请ak密钥 登录百度账号后 控制台 gt
  • keil错误 FATAL ERROR L250: CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED 全部解决方法

    今天我用keil5调试C51的程序 编译都编译不了 出现以下 错误信息 FATAL ERROR L250 CODE SIZE LIMIT IN RESTRICTED VERSION EXCEEDED 问题分析 说明程序大小受到了版本的限制
  • Python读取csv文件的三种方式

    一 前期准备 Python版本 3 7 3 制作一个不包含头文件的csv文件 为了方便文件内容是纯数字 字符集为utf 8 并命名为test csv 放到程序的根目录下 使用PyCharm创建一个Python工程 并安装Numpy和Pand
  • HarmonyOS创作激励计划启动:助力技术创作突破边界

    即日起推出HarmonyOS创作激励计划 成功投稿并入选的文章将在HarmonyOS开发者公众号上线 9大技术社区同步宣发 不仅有丰厚稿酬 还有机会赢取创作奖品 活动时间 即日起 2024年12月31日 每季度按照活动规则评审奖项 活动面向
  • 国内下载VSCode速度太慢解决问题

    国内下载VSCode速度太慢解决问题 首先要去官网找到相应的下载版本 点击下载 此为官网地址 https code visualstudio com 建议下载64位的压缩包 以上为官网下载地址 可以看到下载速度非常慢 解决方法 右键选中该下
  • 1070 结绳(25 分)

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