PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目來源
題目分析
來源:acwing
板子題:合并果子合并果子優先隊列
分析:貪心策略是: 每次取最短的兩條繩子a和b。該兩條繩子合并為1條繩子,且長度變為a+b2\frac{a+b}{2}2a+b?。然后再遞歸選擇最短的兩條繩子,直到剩余1條為止。
做法:使用優先隊列(小根堆!!),從小到大有序。 每次取出a和b,然后再壓入a+b2\frac{a+b}{2}2a+b?到優先隊列中。
ac代碼
#include<bits/stdc++.h> using namespace std; const int N = 1e4+10; int a[N];int main(){int n;cin >> n;priority_queue<int,vector<int>,greater<int>> pq; for(int i = 0; i< n; i ++){int x;cin >> x;pq.push(x);}double res = 0;while(pq.size()>1){double a = pq.top();pq.pop();double b = pq.top();pq.pop();pq.push((a+b)/2.0);}cout<< (int)pq.top()<<endl; }題目來源
PAT甲級1125 Chain the Ropes
https://www.acwing.com/problem/content/description/1620/
總結
以上是生活随笔為你收集整理的PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1113 Integer Se
- 下一篇: PAT甲级1029 Median:[C+