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

2025/5/16

第一题

A. 例题4.1.2 潜水

题目描述

在马其顿王国的ohide湖里举行了一次潜水比赛。

其中一个项目是从高山上跳下水,再潜水达到终点。

这是一个团体项目,一支队伍由n人组成。在潜水时必须使用氧气瓶,但是每只队伍只有一个氧气瓶。

最多两人同时使用一个氧气瓶,但此时两人必须同步游泳,因此两人达到终点的时间等于较慢的一个人单独游到终点所需要的时间。

好在大家都很友好,因此任何两个人后都愿意一起游水。安排一种潜水的策略,使得最后一名选手尽量早的达到终点。

输入格式

第一行:队伍的人数n(<=1000)。

下面是n行,每行1个数,分别是n个潜水所用的时间ti(<=1000)。

输出格式

1个整数,表示最少用的时间。

样例数据

input


31 3 4

Copy

output


8{4+1+3}氧气瓶还必须潜水送回来^-^

Copy

数据规模与约定

时间限制:1 \text {s}1s

空间限制:256 \text {MB}256MB

这道题一开始的时候,我想的是就是让最小值的那个人和每一个人依次来,去。

他是通过嗯但是通过思考其实可以发现,因为把如果把杨西平送到那边,那么那边还剩人数一定的,所以说呢我们其实可以让最大的和第二大的一起过去,然后呢再让一个小时过来。

代码如下,

#include<bits/stdc++.h>
using namespace std;
int n,sum,a[1010]={}; 
int main(){
    freopen("D.in","r",stdin);
    freopen("D.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    sort(a+1,a+1+n);
    while(n>=4)
    {
        int x1=a[1]*2+a[n]+a[n-1];
        int x2=a[1]+a[2]*2+a[n];
        sum+=min(x1,x2);
        n-=2; 
    }
    if(n==3)sum+=a[1]+a[2]+a[3];
    else sum+=a[2];
    cout<<sum;
    return 0;
}

 

相关文章:

  • 炼丹学习笔记3---ubuntu2004部署运行openpcdet记录
  • 数学复习笔记 14
  • 精准掌控张力动态,重构卷对卷工艺设计
  • DAY 28 类的定义
  • 内容中台重构企业知识管理路径
  • 力扣HOT100之二叉树:102. 二叉树的层序遍历
  • 【GAN网络入门系列】一,手写字MINST图片生成
  • 前端取经路——量子UI:响应式交互新范式
  • 知识蒸馏实战:用PyTorch和预训练模型提升小模型性能
  • 【笔记】导出Conda环境依赖以复现项目虚拟环境
  • LLaMA-Factory:准备模型和数据集
  • 详解具身智能开源数据集:ARIO(All Robots In One)
  • Java 多线程基础:Thread 类核心用法详解
  • RabbitMQ 消息模式实战:从简单队列到复杂路由(三)
  • 第一次做逆向
  • LLaMA-Factory:环境准备
  • 【全解析】EN18031标准下的SSM安全存储机制
  • 小刚说C语言刷题—1700请输出所有的2位数中,含有数字2的整数
  • ubuntu22.04卸载vscode
  • C#实现访问远程硬盘(附源码)
  • 广西壮族自治区党委副书记、自治区政府主席蓝天立接受审查调查
  • 上海静安将发放七轮文旅消费券,住宿券最高满800元减250元
  • 上海国际电影节纪录片单元,还世界真实色彩
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 专访|茸主:杀回UFC,只为给自己一个交代