数列极差

题目信息

在黑板上写了N个正整数做成的一个数列,进行如下操作:
每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数。
在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。

输入

多组数据输入
每组数据第一行为N 2<=N<=20
接下来一行,为N个int范围内的正整数。(保证运算过程中数据范围在2^63以内)

输出

对于每组数据,输出一行,为极差M的值

输入样例

4
2 1 4 3

输出样例

13

解题思路

这题的名字叫在北航OJ上的名字是简单·简单的贪心,因此想到应该是用贪心算法来解决,可以写一个只有三个元素的数组做验算,得到最大值和最小值的获得方法,最大值应该是始终选小数来乘,最小值是始终选大数来乘,可以使用优先队列解决。

AC代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define MAXN 25

using namespace std;

int n;
int main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值