2020 蓝桥杯大学模拟赛(三) - 程序设计:养猫题解
文章目录
- 题目描述
- 输入格式
- 输出格式
- 数据范围
- 样例输入
- 样例输出
- 算法分析
- 解题代码
题目描述
众所周知的,⼩明家⾥有好多猫,经过⼀次“猫⼝普查”,我们得到了以下信息:
⼩明家⾥有 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 蓝桥杯大学模拟赛(三) - 程序设计:养猫题解相关推荐
- 第十四届蓝桥杯校内模拟赛第二期-Java个人题解(仅供参考)
刚刚结束第十四届蓝桥杯校内模拟赛第二期,在这记录下自己的代码 不保证正确! 不保证正确! 不保证正确! 有问题一起改正!! 题解 2048 代码: package _14届模拟2;public cla ...
- 2020蓝桥杯省内模拟赛C++B组1-8(详细解析,看完就会)
一.字母排列 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个不同的单词. 分 ...
- 【c语言】2020蓝桥杯校内模拟赛c组
求1200000的约数有多少?(只计算正约数) #include <stdio.h> int main(int argc, char *argv[]) {int n,i,k=0;print ...
- 2020蓝桥杯校内模拟赛1-5(详细版本,看完就会)
1.题目: 问题描述 在计算机存储中,15.125GB是多少MB? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数. 学习计算机的人都知道1GB=1024MB(2的1 ...
- c++判断奇偶_第十一届(今年)蓝桥杯省模拟赛 试题+源码 C/C++详解
后台回复开发工具,免费获取C语言常用编译器 本文章来源:CSDN|亓官劼 本文是第十一届蓝桥杯省模拟赛的试题和部分题解,博主参加的是4.13日的下午场,也就是本次模拟赛的第一天了吧,不知道有没有上午场 ...
- 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析
新手,欢迎交流,剩下D题不知如何下手,望大佬指教. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:计算周长 B. 结果填空:七巧板 C. 结果填空:苹果 ...
- 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析
新手,欢迎交流,更新完毕. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:有趣的数字 B. 结果填空:爬楼梯 C. 结果填空:七巧板 D. 结果填空:苹果 ...
- 计蒜客2020蓝桥杯大学A组模拟赛题解
计蒜客2020蓝桥杯大学A组模拟赛题解 蓝桥杯的话,去年拿了C++组的国二.今年报名了新成立的Python组,不知道能不能摸到国一的鱼 模拟赛链接如下: https://www.jisuanke.co ...
- 2020年蓝桥杯省模拟赛
2020年4月18日蓝桥杯省模拟赛 第一题: 问题描述: 由1对括号,可以组成一种合法括号序列:(). 由2对括号,可以组成两种合法括号序列:()().(()). 由4对括号组成的合法括号序列一共有多 ...
- 蓝桥杯校内模拟赛_C++组
蓝桥杯校内模拟赛 填空题 填空题比较简单,只需要在空格中填写整数答案即可: 在计算机存储中,15.125GB是多少MB? 解题思路: 1GB=1024MB,打开系统计算器计算即可 答案: 15488 ...
最新文章
- window 10 桌面显示计算机的操作
- WPF 基础控件之 DatePicker 样式
- 钢笔墨水能否代替打印机墨水_LAMY钢笔应该如何选择墨水?
- Mybatis一级缓存和二级缓存 Redis缓存
- 基于JAVA+SpringMVC+Mybatis+MYSQL的企业审批管理系统
- 华为root_传Mate40系列12月率先升级鸿蒙OS 华为官方回应:真相原来是这样
- [APK签名] .pk8、.x509.pem转化为.keystore签名
- MATLAB简介与基础知识
- SSM框架整合-404
- 小程序图片上传formdata boundary + base64
- named_struct类型怎么用
- JavaScript基础学习总结(一) 适合小白
- OpenGL学习---高级光照---法线贴图
- MIUI9系统怎么卡刷开发版获取ROOT超级权限
- 【原创文章】PHP+MySQL 创建表单并将表单数据写入数据库中。
- Java分别获取指定日期的年月日
- 防火墙系列(二)-----防火墙的主要技术之包过滤技术,状态检测技术
- 弹性模量、刚度、强度、硬度_51CAE_新浪博客
- 寻人风波——解决iphone4s无法接听的问题
- android 多线程 js,JS多线程(web work)
热门文章
- matlab sin函数怎么写,matlab实现插值法sin函数
- Android自定义View——仿QQ等级天数进度
- Mono.Cecil - 0.6
- Java基础题26:(多选题)下列哪些选项属于Java技术体系()
- Andriod 获取手机CPU型号设备信息
- 学生信息管理系统python面向对象_Python学员管理系统【面向对象实现】
- unity黄金矿工游戏
- IMDB电影排行爬取分析
- kubectl源码分析之rollout history
- Debezium报错处理系列:Creation of database history topic failed, please create the topic manually