合并果子
程序员文章站
2022-07-13 13:52:32
...
合并果子
洛谷P1090
这题其实简单来讲就是选出两个最小的相加
这貌似是我写过难度最高的题解了 这道题用priority_queue最方便
priority_queue是什么?英语有信心的大神戳这里 其他人戳这里
对优先队列 或priority_queue有点了解了吧 接下来就特别简单了
//
// main.cpp
// 合并果子
//
// Created by Helen on 2020/1/19.
// Copyright © 2020 Helen. All rights reserved.
//
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
priority_queue<int, vector<int>, greater<int> > q;//设优先队列的方法,greater<int>是从小到大排序的意思
int n,x,total=0;
int main ()
{
cin >> n;
for (int i=0;i<n;i++)
{
cin >> x;
q.push(x);//把数插入队列
}
while (q.size()>1)
{
int a=q.top();//取最小数
q.pop();//把刚用过的那个数删掉
int b=q.top();//取第二小数
q.pop();//同上
total+=(a+b);//相加
q.push(a+b);//把加好的再插入
}
cout << total << endl;
return 0;
}
此题解已AC,也欢迎指出更多优化方法~
❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀
上一篇: 二分&三分
下一篇: 洛谷P1226 快速幂