当前位置: 首页 > news >正文

电池的寿命

思路:

首先,我们观察发现:由于每枚电池的使用时间不同,而我们又要减少浪费才能使所有电池加起来用得最久,不难发现:当n=2时,输出较小值。

第一步:将电池分为两组,使两组电池的总使用时长的差值尽可能小。
第二步:如果总时长更长的分组中有多于1个电池,那么取出这一组中的一些电池运行游戏机,消耗其中一些电池的电量,使得两组电池的使用时长相等。

代码解释

  1. 输入处理:借助while (scanf("%d", &n) != EOF)持续读取每组数据的电池数量n
  2. 电池数据读取:用数组a来存储每个电池的使用时长,同时在读取时计算总时长sum,并找出使用时长最长的电池maxn
  3. 判断最长使用时间
    • 如果除最长电池外其他电池总时长小于最长电池时长,那么最长使用时间就是其他电池的总时长。
    • 如果除最长电池外其他电池总时长大于等于最长电池时长,那么最长使用时间为所有电池总时长的一半。
  4. 输出结果:以保留一位小数的格式输出结果。

其实对于每一组数据只要判断最大的那个数是不是比其余的数的和都要大,如果成立的话那当然就是剩下的所有电池与最大的电池车轮战,最大为n-1个数的和,如果不成立的话那么最大就是n个数的和的一半,也就是说电池是一定可以全部用完的。

代码:

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N];
int main(){int n;while(scanf("%d",&n)!=EOF) {int maxn=-1,sum=0;for(int i=1;i<=n;i++){cin>>a[i];sum+=a[i]; if(maxn<a[i]) maxn=a[i]; }if((sum-maxn)<maxn){printf("%.1f\n",(sum-maxn)*1.0);}else{printf("%.1f\n",(sum-maxn-maxn)*1.0/2+maxn);}}return 0;
} 

相关文章:

  • 为什么从Word复制到PPT的格式总是乱掉?
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(三)
  • SQL 处理重复数据之技巧(Techniques for Handling Duplicate Data with SQL)
  • Kafka HA集群配置搭建与SpringBoot使用示例总结
  • 设计一个新能源汽车控制系统开发框架,并提供一个符合ISO 26262标准的模块化设计方案。
  • zynq7035的arm一秒钟最多可以支持触发多少次中断
  • Docker compose 部署微服务项目(从0-1出发纯享版无废话)
  • 汽车制造行业如何在数字化转型中抓住机遇?
  • IdeaVim 配置与使用指南
  • 算法效率的钥匙:从大O看复杂度计算 —— C语言数据结构第一讲
  • Linux红帽:RHCSA认证知识讲解(十 四)分区管理、交换分区,创建逻辑卷与调整逻辑卷的大小
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(二)
  • WPF常用技巧汇总 - Part 2
  • Java详解LeetCode 热题 100(01):LeetCode 1. 两数之和(Two Sum)详解
  • EDR 保护时间(EDR Guard Time)
  • DeepSeek智能时空数据分析(四):绘制行政区域并定制样式
  • Java后端开发day37--源码解析:TreeMap可变参数--集合工具类:Collections
  • PostgreSQL的扩展 credcheck
  • 犬鼻子检测数据集VOC+YOLO格式6808张1类别近距离拍摄
  • 云原生课程-Docker
  • 大理杨徐邱再审上诉案宣判:驳回上诉,维持再审一审判决
  • 央行副行长:我们在研究丰富政策工具箱,将适时推出增量政策
  • 一张老照片里蕴含的上海文脉
  • 李强主持召开国务院常务会议
  • 高璞任中国第一汽车集团有限公司党委常委、副总经理
  • 我国核电总体规模首次跃居世界第一,发电量持续增长