文章目录

  • 题目描述
    • 输入格式
    • 输出格式
    • 数据范围
    • 样例输入
    • 样例输出
  • 算法分析
  • 解题代码

题目描述

众所周知的,⼩明家⾥有好多猫,经过⼀次“猫⼝普查”,我们得到了以下信息:

⼩明家⾥有 n 只猫,第 i 只猫的体重是 ai 。然⽽⼩明热爱虐猫(并不),他决定对这些猫做⼀些有 ♂趣的事情

经过了两年半的练习之后,这些猫已经能完全听懂⼩明的指令了。

⼩明的指令分成两个阶段,具体步骤如下:

  • 1.指定⼀种颜⾊,所有这种颜⾊的猫都会从猫窝⾥跑出来,此时⼩明需要付出总共为这些猫的体重的代价。例如,现在⼩明有三只红⾊的猫,体重分别为1,2,3,还有两只蓝⾊的猫,体重分别为 7,8 。此时如果⼩明声明的颜⾊是红⾊,那么所有红⾊的猫会出来,⼩明需要⽀付的代价为 6 。如果⼩明声明的颜⾊是蓝⾊,那么所有蓝⾊的猫会出来,⼩明需要⽀付的代价为 15

  • 2.对于现在出来的这些猫,⼩明选择其中的⼀部分,将他们染成⼀种新的颜⾊。然后放回所有的猫。

初始时所有猫都是⽩⾊。现在⼩明想知道,如果想要使得这些猫两两颜⾊都不同,最少需要花费多 少代价。

输入格式

第一行一个整数 n,表示一共有 n 只猫,接下来一行 n 个数 ai 意义如题所示

输出格式

输出⼀⾏⼀个整数表示最⼩代价

数据范围

样例输入

4
6 7 70 25

样例输出

159

算法分析

一开始的想法是将猫的代价从大到小排序,然后每次挑出最大代价的猫去染色,但是这个算法对于样例输入的代价6,7,70,25是可行的,但是如果除去最大代价的剩下的猫的代价,要比最大猫的代价更大,那这个算法就不能保证最小代价

例如:69,70,71,72

可以观察发现,这是一颗哈夫曼树,也就是说这道题应该从小问题考虑到总体,而不是从整体模拟选猫的过程

解题代码

#include <iostream>
#include <functional>
#include <algorithm>
#include <vector>
#include <queue>using namespace std;//优先队列模拟哈夫曼树
priority_queue<long long , vector<long long>, greater<long long>> head;
int n;
int a[100005];int main()
{cin >> n;for(int i = 0; i < n; i++){cin >> a[i];head.push(a[i]);}long long sum = 0;for(int i = 0; i < n - 1; i++){long long a = head.top();head.pop();long long b = head.top();head.pop();long long c = a + b;sum += c; //每个分支节点就是要加和的权重head.push(c);}cout << sum << endl;return 0;
}

2020 蓝桥杯大学模拟赛(三) - 程序设计:养猫题解相关推荐

  1. 第十四届蓝桥杯校内模拟赛第二期-Java个人题解(仅供参考)

    刚刚结束第十四届蓝桥杯校内模拟赛第二期,在这记录下自己的代码 不保证正确! 不保证正确! 不保证正确! 有问题一起改正!! 题解 2048 代码: package _14届模拟2;public cla ...

  2. 2020蓝桥杯省内模拟赛C++B组1-8(详细解析,看完就会)

    一.字母排列 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个不同的单词. 分 ...

  3. 【c语言】2020蓝桥杯校内模拟赛c组

    求1200000的约数有多少?(只计算正约数) #include <stdio.h> int main(int argc, char *argv[]) {int n,i,k=0;print ...

  4. 2020蓝桥杯校内模拟赛1-5(详细版本,看完就会)

    1.题目: 问题描述 在计算机存储中,15.125GB是多少MB? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数. 学习计算机的人都知道1GB=1024MB(2的1 ...

  5. c++判断奇偶_第十一届(今年)蓝桥杯省模拟赛 试题+源码 C/C++详解

    后台回复开发工具,免费获取C语言常用编译器 本文章来源:CSDN|亓官劼 本文是第十一届蓝桥杯省模拟赛的试题和部分题解,博主参加的是4.13日的下午场,也就是本次模拟赛的第一天了吧,不知道有没有上午场 ...

  6. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,剩下D题不知如何下手,望大佬指教. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:计算周长 B. 结果填空:七巧板 C. 结果填空:苹果 ...

  7. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,更新完毕. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:有趣的数字 B. 结果填空:爬楼梯 C. 结果填空:七巧板 D. 结果填空:苹果 ...

  8. 计蒜客2020蓝桥杯大学A组模拟赛题解

    计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...

  9. 2020年蓝桥杯省模拟赛

    2020年4月18日蓝桥杯省模拟赛 第一题: 问题描述: 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多 ...

  10. 蓝桥杯校内模拟赛_C++组

    蓝桥杯校内模拟赛 填空题 填空题比较简单,只需要在空格中填写整数答案即可: 在计算机存储中,15.125GB是多少MB? 解题思路: 1GB=1024MB,打开系统计算器计算即可 答案: 15488 ...

最新文章

  1. window 10 桌面显示计算机的操作
  2. WPF 基础控件之 DatePicker 样式
  3. 钢笔墨水能否代替打印机墨水_LAMY钢笔应该如何选择墨水?
  4. Mybatis一级缓存和二级缓存 Redis缓存
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
  6. 华为root_传Mate40系列12月率先升级鸿蒙OS 华为官方回应:真相原来是这样
  7. [APK签名] .pk8、.x509.pem转化为.keystore签名
  8. MATLAB简介与基础知识
  9. SSM框架整合-404
  10. 小程序图片上传formdata boundary + base64
  11. named_struct类型怎么用
  12. JavaScript基础学习总结(一) 适合小白
  13. OpenGL学习---高级光照---法线贴图
  14. MIUI9系统怎么卡刷开发版获取ROOT超级权限
  15. 【原创文章】PHP+MySQL 创建表单并将表单数据写入数据库中。
  16. Java分别获取指定日期的年月日
  17. 防火墙系列(二)-----防火墙的主要技术之包过滤技术,状态检测技术
  18. 弹性模量、刚度、强度、硬度_51CAE_新浪博客
  19. 寻人风波——解决iphone4s无法接听的问题
  20. android 多线程 js,JS多线程(web work)

热门文章

  1. matlab sin函数怎么写,matlab实现插值法sin函数
  2. Android自定义View——仿QQ等级天数进度
  3. Mono.Cecil - 0.6
  4. Java基础题26:(多选题)下列哪些选项属于Java技术体系()
  5. Andriod 获取手机CPU型号设备信息
  6. 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
  7. unity黄金矿工游戏
  8. IMDB电影排行爬取分析
  9. kubectl源码分析之rollout history
  10. Debezium报错处理系列:Creation of database history topic failed, please create the topic manually