news 2025/12/25 7:06:19

2025年中南大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2025年中南大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

2025年中南大学计算机考研复试机试真题

2025年中南大学计算机考研复试上机真题

历年中南大学计算机考研复试上机真题

历年中南大学计算机考研复试机试真题

更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream

N 诺 DreamJudge 题库:输入 “学校名称” 即可筛选该校历年机试真题,题目均在考纲范围内,按难度自动排序。还可搭配《计算机考研机试攻略》刷题,书中题目可通过题号直接在题库中查找。

合并果子

题目描述

Time Limit: 1000 ms
Memory Limit: 256 mb

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。 例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

输入输出格式
输入描述:

输入包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。

输出描述:

输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于2^31。

输入输出样例
输入样例#:
3 1 2 9
输出样例#:
15

代码一

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. priority_queue<int,vector<int>,greater<int>> q;
  5. int n;
  6. cin>>n;
  7. int a;
  8. while(n--){
  9. cin>>a;
  10. q.push(a);
  11. }
  12. int s=0;
  13. while(q.size()>1){
  14. int m1=q.top();
  15. q.pop();
  16. int m2=q.top();
  17. q.pop();
  18. s+=m1+m2;
  19. q.push(m1+m2);
  20. }
  21. cout<<s;
  22. }

代码二

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. int n;
  5. cin>>n;
  6. auto cmp=[](const int a,const int b){
  7. return a>b;
  8. };
  9. priority_queue<int,vector<int>,decltype(cmp)>pq(cmp);
  10. while(n--){
  11. int num;
  12. cin>>num;
  13. pq.push(num);
  14. }
  15. int ans=0;
  16. while(!pq.empty()){
  17. int a=pq.top();
  18. pq.pop();
  19. if(pq.empty()){
  20. break;
  21. }
  22. int b=pq.top();
  23. pq.pop();
  24. int res=a+b;
  25. ans+=res;
  26. pq.push(res);
  27. }
  28. cout<<ans;
  29. }

代码三

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4. priority_queue<int,vector<int>,greater<int>> pq;
  5. int n;
  6. int sum=0;
  7. cin>>n;
  8. vector<int> m(n);
  9. for(int i=0;i<n;i++){
  10. cin>>m[i];
  11. pq.push(m[i]);
  12. }
  13. while(pq.size()!=1){
  14. int num1=pq.top();
  15. pq.pop();
  16. int num2=pq.top();
  17. pq.pop();
  18. sum=sum+num1+num2;
  19. pq.push(num1+num2);
  20. }
  21. cout<<sum;
  22. }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/23 16:53:52

旱涝预警新方案:地下2米土壤墒情实时追踪系统,管式墒情监测仪

我司自主研发的管式土壤墒情监测仪&#xff0c;是一款以介电常数原理为基础的传感器&#xff1b;能够对不同土层的土壤温湿度进行快速、准确、全面地监测。在农业现代化进程中&#xff0c;水资源短缺与种植成本攀升成为制约产业发展的关键瓶颈。精准把握土壤墒情、科学调控水肥…

作者头像 李华
网站建设 2025/12/23 16:52:47

智慧校园数据安全新挑战:数据库审计如何守护教育信息资产

✅作者简介&#xff1a;合肥自友科技 &#x1f4cc;核心产品&#xff1a;智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…

作者头像 李华
网站建设 2025/12/23 16:52:42

算法题 连续整数求和

829. 连续整数求和 问题描述 给定一个正整数 n&#xff0c;返回可以表示为 连续正整数之和 的方案数。 示例&#xff1a; 输入: n 5 输出: 2 解释: 5 2 3&#xff0c;共2种表示方法&#xff08;包括5本身&#xff09;输入: n 9 输出: 3 解释: 9 9 4 5 2 3 4&#xff…

作者头像 李华