南邮 OJ 1250 最优合并问题
来源:互联网 发布:抓鬼软件 编辑:程序博客网 时间:2024/05/16 06:07
最优合并问题
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 46 测试通过 : 28
总提交 : 46 测试通过 : 28
比赛描述
给定k 个排好序的序列s1 , s2 , ….sk , 用2 路合并算法将这k 个序列合并成一个序列。假设所采用的2 路合并算法合并2 个长度分别为m和n的序列需要m + n -1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少。
为了进行比较,还需要确定合并这个序列的最差合并顺序,使所需的总比较次数最多。
对于给定的k个待合并序列,编程计算最多比较次数和最少比较次数合并方案。
输入
第一行有1 个正整数k,表示有k个待合并序列。接下来的1 行中,有k个正整数,表示k个待合并序列的长度。
输出
将编程计算出的最多比较次数和最少比较次数输出。
样例输入
4
5 12 11 2
样例输出
78 52
提示
undefined
题目来源
NUAA
#include<iostream>#include<set>using namespace std;int main(){int k,a,minCost,maxCost;;multiset<int> iSet1, iSet2;multiset<int>::iterator it;multiset<int>::reverse_iterator rIt;cin>>k;while(k--){cin>>a;iSet1.insert(a);iSet2.insert(a);}minCost = 0;while(iSet1.size()>=2){it = iSet1.begin();a = *it;iSet1.erase(it);it = iSet1.begin();a += *it;iSet1.erase(it);minCost += a-1;iSet1.insert(a);}maxCost = 0;while(iSet2.size()>=2){rIt = iSet2.rbegin();a = *rIt;iSet2.erase((++rIt).base());rIt = iSet2.rbegin();a += *rIt;iSet2.erase((++rIt).base());maxCost += a-1;iSet2.insert(a);}cout<<maxCost<<' '<<minCost<<endl;}
0 0
- 南邮 OJ 1250 最优合并问题
- 南邮 OJ 1238 最优时间表问题
- 南邮 OJ 1254 最优服务次序问题
- 南邮 OJ 1271 最优分解问题
- 最优合并问题
- 最优合并问题
- 算法 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 最优合并问题
- 【贪心】最优合并问题
- 南邮 OJ 1220 独立任务最优调度问题
- 南邮 OJ 1272 可重复最优分解问题
- 南邮 OJ 1225 石子合并问题
- 算法笔记 //08_最优合并问题
- oj-【基础图论】最优布线问题
- hdu 5347 MZL's chemistry(2015多校第五场第5题)高中化学选修知识 第一电离能
- ExtJs grid导出Excel
- 11. CSS 文本属性
- Google性能工程师Ilya Grigorik谈HTTP2
- 网页 布局响应式设计
- 南邮 OJ 1250 最优合并问题
- Waited long enough for: ServiceRecord 问题解决
- mysql 安装配置的问题
- UE4学习笔记16th
- OpenGL超级宝典visual studio 2013开发环境配置,GLTools
- 关键字explicit
- rose初始化
- HDU 2544 最短路(四种写法:Floyd、Dijkstra、Bellman-Ford、SPFA)
- 修改MySQL字符编码【Linux】