合并果子加强版

合并果子加强版 问题描述:有n堆果子,你可以选择最多其中m堆果子合并成一堆,合并的代价是这些果子数量之和,求最后合并成一堆果子的最少总代价。 文件输入:n,m(1<=m<=n<=10000) 以下n行为每堆果子数量(<=10000) 文件输出:一个数为最少总代价; 样例输入: 5 3 3 2 1 4 5 样例输出:21 分析: 该题要注意的是,若每次不能合并M堆,则应该放在第一次合并时,因为当每次合并M堆到最后不够M堆时,还是需要再合并一次,导致总代价增加。而第一次选一合适的堆合并,以后每次都合并M堆,这样总代价最小 解法1: 堆排序...
2010-07-05 17:09 | 阅读 818 次 | 评论 1 条

光荣的梦想

【例题4】光荣的梦想1635 Description:Prince对他在这片大陆上维护的秩序感到满意,于是决定启程离开艾泽拉斯。在他动身之前,Prince决定赋予King_Bette最强大的能量以守护世界、保卫这里的平衡与和谐。在那个时代,平衡是个梦想。因为有很多奇异的物种拥有各种不稳定的能量,平衡瞬间即被打破。KB决定求助于你,帮助他完成这个梦想。   一串数列即表示一个世界的状态。   平衡是指这串数列以升序排列。而从一串无序数列到有序数列需要通过交换数列中的元素来实现。KB的能量只能交换相邻两个数字。他想知道他最少需要交换几次就能使数列有序。 Input:第一行为数列...
2010-07-05 16:56 | 阅读 1133 次 | 评论 0 条

查找第k小的数

查找第k小的数 问题描述:给定n个元素,要求从中找出第k小的元素。 文件输入:第一行两个整数:第一个是n表示有n个正整数(n<=50000),第二个整数k表示要查找第k小的元素;   第二行有n 个用空格隔开的整数。 文件输出:一个整数,第一个表示第k 小的元素的值。 样例输入:  5 3  23 8 91 56 4 样例输出:  23 #include<iostream> using namespace std; int a[20001],k; int search(int le,int ri) { if(le==ri)return a[l...
2010-07-05 16:53 | 阅读 1178 次 | 评论 0 条

报表难题

报表难题 问题描述:给出n个数,求相邻两个数绝对值之差的最小值。有两种操作,一种是Q(表示你需要回答目前这些数的相邻两个数绝对值之差的最小值),一种是k(表示删原第K个数)。 文件输入:n,m(n,m<=100000) n个数 以下每行一个共m个操作 文件输出:对应Q的回答 样例输入: 5 3 1 2 5 8 14 Q K 2 K 3 Q 样例输出: 1 6 解法1: #include <iostream> using namespace std; ...
2010-07-05 16:50 | 阅读 400 次 | 评论 0 条
文章分类
文章归档
最新评论