贪心算法之合并果子
Posted 亮星的信息学小屋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法之合并果子相关的知识,希望对你有一定的参考价值。
题 目
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
解 析
这道题
难度不大
毕竟是贪心
难度不会太高
但是
坑还是不少
贪心的题目
本身不难
他唯一的增加难度的方式
也就是挖坑了
下面开始“填坑”
加油!
填 坑
加油!
下面是你们最爱的代码
#include<bits/stdc++.h>
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long sum,a[100001],n,d;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
d=n;
sort(a+1,a+n+1);
for(int i=1;i<=d-1;i++)
{
a[1]+=a[2];
for(int j=2;j<=n-1;j++)
a[j]=a[j+1];
sum+=a[1];
n--;
sort(a+1,a+n+1);
}
cout<<sum<<endl;
return 0;
}
加油!
反 思
怎么样,代码简单吧,可是,上洛谷测一测,只要数据量一大就会超时,再怎么优化都不行。
只好搬救兵了,老爸来看了看,说这题思路是对的,但是计算量大,所以数据量一大就肯定超时。解决方法有两个,要不就采用堆排序的方法,不停地构造小跟堆。其实本题的标准做法是采用队列的方法,通过不停的进出队实现的,那样就简单的多,关于队列,老爸说过段时间讲数据结构的时候再详细讲,好吧,那就这样吧。
加油!
题外话:赶快开学吧!
加油
往期精彩推荐
某些图片来自互联网,如有侵权,请联系删除
欢迎关注
亮星的信息学小屋
亮星的信息学小屋
觉得有用,请点右下方“在看”,谢谢鼓励
以上是关于贪心算法之合并果子的主要内容,如果未能解决你的问题,请参考以下文章