牛客 124G--组合游戏

2023-11-13

链接: https://www.nowcoder.com/acm/contest/124/G
来源:牛客网

题目描述

2018年4月8日星期日,小龙沉迷于一个叫做组合的游戏。

游戏规则是这样的,原本有一个长度为A的大木板,现在把它分成了n份长度可能不一样的木板。每一个模板的长度为Xi,每次游戏都要把这些木板组合为一个完整的木板,但是小龙每次只能拿两个小木板去组合成为一个,然后把这新木板和剩下的木板放在一起,重复以上步骤直到最后只剩下一个木板。

每次组合木板会花费K个金币,K等于拿起的两个木板长度之和,问小明每次玩游戏最少花费是多少?

例如:当有n=3块木板的时候

每一块木板的长度分别是是 1、2、3

第一次拿长度为1 和 2 的木板拼接成长度为3的木板,花费3个金币

此时有两块木板,长度分别为3 和 3

第二次拿长度为3 和3 的木板拼接成长度为6的木板,花费6个金币

总共花费9个金币(最少)。

输入描述:

 
 

输入有多组,每一组第一行是n(1 < n <= 200)

接下来第二行到第n+1行,第i+1行表示小木板的长度X i (X i <= 200)

输出描述:

输出每个样例的最少花费,每个答案占据一行。

示例1

输入

 
  

3123

输出

 
  

9

思路:很简单的贪心,就是用来一下multiset,因为自己很不熟悉,所以下一篇博客而已。。。
代码:
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define mod 1000000007
long long T,n,num,p,k,a,b,c,x,ans;
int main()
{
    multiset<int>s;
    while(~scanf("%lld",&n))
    {
        s.clear();
        ans=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&x);
            s.insert(x);
        }
        while(s.size()>1)
        {
            a=*s.begin();
            s.erase(s.begin());
            b=*s.begin();
            s.erase(s.begin());
            ans+=a+b;
            //0-cout<<a<<" "<<b<<" "<<ans<<" "<<a+b<<endl;
            s.insert(a+b);
        }
        cout<<ans<<endl;
    }
}

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

牛客 124G--组合游戏 的相关文章

  • 优化 Python 数字输出——摆脱科学计数法

    优化 Python 数字输出 摆脱科学计数法 Python 是一门广泛应用的编程语言 很多时候我们需要对数字进行处理并输出到控制台或文件中 然而 在处理大量数字时 Python 默认使用科学计数法来简化数字 这种格式难以阅读并且可能会导致精

随机推荐

  • 这一篇彻底说清楚了!乐高,编程,机器人到底要不要学?

    转自 http www sohu com a 282193446 120065891 即可关注我们 从前几年开始 乐高培训就如火如荼 很多爸妈都知道 孩子学习乐高可以培养想象力 空间结构能力 到5 6岁后很多孩子开始学习乐高机器人 会开始涉
  • 并发控制二(封锁)

    封锁是实现并发控制的一个非常重要的技术 所谓封锁就是事务T在对某个数据对象例如表 记录等操作之前 先向系统发出请求 对其加锁 加锁后事务T就对该数据对象有了一定的控制 在事务T释放它的锁之前 其他事务不能更新此数据对象 确切的控制由封锁的类
  • Vue2笔记(全)

    一 介绍 Vue js是一套构建用户界面的渐进式框架 渐进式 主张最少 最大的特点是没有 操作 主张只操作数据 优点 1 轻量级的数据框架 2 双向数据绑定 3 提供了指令 4 组件化开发 5 客户端路由 6 状态管理 同cookie se
  • Google Tag Manager 基本应用与实践

    Google Tag Manager 基本应用与实践 1 注册 Container 2 安装 3 建 Tag 3 1 关联 GA 配置 3 2 新建变量 4 建 Trigger 5 Preview 调试 6 发布 总结 如果想了解网站用户的
  • linux查看matlab,Matlab 2017b在Linux(ubuntu+ROS)安装步骤及帮助文档查看说明

    Matlab 2017b在Linux ubuntu 安装步骤 如下 1 加载镜像 新建挂载目录 mkdir home relaybotbox matlabtemp sudo mount t auto o loop media relaybo
  • C++57个入门知识点_22_ 构造函数和析构函数的调用时机(可手动调用构造和析构;访问权限一般为公有;局部对象声明时构造,出作用域析构;全局对象主函数前构造,出主函数后析构;全局对象实现主函数前后)

    上篇 C 57个入门知识点 21 析构函数的调用 主程序结束前自动跳入对象析构函数 析构函数中使用free 函数就可实现对象资源的释放 内存泄漏 内存没有得到释放 不指定大小的数组定义方法 指针 介绍了程序中何时调用析构函数及使用析构函数可
  • elementui el-table表格实现跨页(翻页)保存勾选状态(后端分页)

    思路 后端分页导致每一页之间的勾选状态都是独立的 我们需要新建一个数组来保存这些被勾选数据的id 当切换到某个页码时 从数组中进行比对 如果当前页码有待勾选的id 则用代码让当前页码的数据勾选起来 注意 不要使用row key 和 rese
  • ccui.TextBMFont

    local myTextBMFont ccui TextBMFont create myTextBMFont setFntFile ui project ui res font Newfont TTF 其中setFntFile 只要是字体文
  • Idea部署项目时遇到Errors occurred while compiling module的时候,可能遇到的问题

    xxx模块编译错误 java内部编辑器错误 问题原因 模块或项目java版本不一致 解决思路 1 首先检查pom文件制定的java版本是否与项目的一致 打开项目编辑器 快捷键Ctrl Alt Shilt S 2 再检查模块的java版本是否
  • 力扣之两数之和(题号1)

    题目叙述 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 你可以假设每种输入只会对应一个答案 但是 你不能重复利用这个数组中同样的元素 示例 给定 nums 2 7
  • 在一个数组中找出两个数,这两个数之和为指定目标值,返回这两个数下标(leecode)(c++)

    本文主要总结在一个数组中取出两个数 这两个数满足条件为 两数之和为制定目标值target 并且函数返回这两个数下表 示例 给定 nums 5 6 7 8 9 10 target 19 因为 nums 4 nums 5 9 10 19 所以返
  • 在Windows下源码编译LLVM(MingW)

    前言 由于最近工作项目需要 需要在windows下基于mingw 即使用gcc编译器 非vc的编译器 编译LLVM 踩坑无数 仅此一记 环境 win10 64位专业版 准备 试过很多种编译方式 最终发现还是msys2比较靠谱 即在windo
  • R语言与机器学习中的回归方法学习笔记

    机器学习中的一些方法如决策树 随机森林 SVM 神经网络由于对数据没有分布的假定等普通线性回归模型的一些约束 预测效果也比较不错 交叉验证结果也能被接受 下面以R中lars包包含数据集diabetes为例说明机器学习中的回归方法 一 数据集
  • JAVA根据模板生成Word文档

    一 需要模板word文件和document xml模板配置文件 首先把word文件重命名后缀改为 zip然后打开 就能在word文件夹下就能找到document xml了 在document xml模板中需要赋值的地方配置好占位符 二 导入
  • CNN调参

    一 学习率 学习率决定了每步权重更新对当前权重的改变程度 其中E w 为我们优化的损失函数 是学习率 学习率太小 更新速度慢 学习率过大 可能跨过最优解 因此 在刚开始训练 距离最优解较远时可以采用稍大的学习率 随着迭代次数增加 在逼近最优
  • 自动化测试框架rf(Robot Framework)的安装

    2022了 还没自己装过rf 网上找了不少文章 或多或少都跟本地环境不太一下 作为新手 把安装过程做一次记录分享 仅供参考 首先 帖一下我自己电脑的基本情况 下面就开始吧 一 JAVA环境安装 现在基本都是java8以上了 所以建议到官网下
  • Node.js中gulp插件的安装使用

    1 Node js说明 gulp是用JavaScript语言编写的运行在Node js平台开发的前端构建工具 是前端开发人员自动处理日常任务的首选工具 gulp cli 启动构建工具的命令行接口 本地gulp 构建时实际运行的程序 gulp
  • [OLED] 利用stm32开发板控制OLED

    一 OLED的介绍 OLED 即有机发光二极管 Organic Light Emitting Diode 又称为有机电激光显示 Organic Electroluminesence Display OELD OLED由于同时具备自发光 不需
  • 连续时间、离散时间信号、模拟和数字信号辨析

    连续时间和离散时间信号 一个信号 它是在时间t的连续值上给出的 就是一个连续时间信号 而一个信号仅在t的离散值上给出则是一个离散时间信号 模拟和数字信号 凡一个信号的幅度在某一连续范围内能够取到任何值的信号就是模拟信号 这意味着一个模拟信号
  • 牛客 124G--组合游戏

    链接 https www nowcoder com acm contest 124 G来源 牛客网 题目描述 2018年4月8日星期日 小龙沉迷于一个叫做组合的游戏 游戏规则是这样的 原本有一个长度为A的大木板 现在把它分成了n份长度可能不