合并果子

简介: 合并果子


题目描述

输入

输出

样例输入1

3

1 2 9

样例输出1

15

做法1

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin >> n;
    /* 默认的PQ是从大到小弹出的 我们重载小于号为greater<int> 即从小到大弹出 */
    priority_queue<int, deque<int>, greater<int>> pq;
    while (n--) {
        int tmp;
        cin >> tmp;
        pq.push(tmp);
    }
    int ans = 0;
    /* 最后一个元素不参与合并 */
    while (pq.size() > 1) {
        int t1 = pq.top();
        pq.pop();
        int t2 = pq.top();
        pq.pop();
        ans += t1 + t2;
        pq.push(t1 + t2);
    }
    cout << ans << endl;
    return 0;
}
相关文章
|
人工智能 算法 C++
合并果子。
合并果子。
合并果子。
|
人工智能
1369:合并果子(fruit)
1369:合并果子(fruit)
119 0
贪心:合并果子
分析:这道题不是前缀和,记好!!!用到了优先队列,默认是从大到小,改一下就变成了从小到大
91 0
贪心:合并果子
|
机器学习/深度学习
RQNOJ 石子合并
点击打开链接 思路: 区间dp 分析: 1 很多人可能看到这一题首先想到的是贪心,但是很不幸的是这道题的贪心做法是错误的,因此正解是dp 2 不管怎么合并,总之最后总会归结为2堆,如果我们把最后的两堆分开,左边和右边无论怎么合并都必须满足最优合并方案,整个问题才能是最优的 3 题目是一个环,我们可以把环变成链那就是在后面在加上去,那么最后的ans一定是dp[1][n-1],dp[2][n]...中的最小值和最大值 4 我们dpMin[i][j]表示合并第i堆到第j堆石子所得的最小分数,dpMax[i][j]表示最大分数。
958 0
|
人工智能
合并果子(NOIP2004)
合并果子(NOIP2004)【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。
997 0
|
9月前
|
人工智能 算法
合并果子(优先级队列)
合并果子(优先级队列)
60 0
|
人工智能 算法 C++
洛谷 P1090 合并果子(贪心)
洛谷 P1090 合并果子(贪心)
157 0
每日一题——合并两个有序链表
每日一题——合并两个有序链表

热门文章

最新文章