[优先队列]的应用 priority_queque p164王道 哈弗曼树

//[优先队列]的应用 priority_queque p164王道
#include <iostream>
#include <cstdio>
#include <queue>
#include <string>
using namespace std;
struct Complex{
    int real;
    int imag;
    Complex(int a,int b):real(a),imag(b){}
    bool operator< (Complex c) const{
        if(real*real + imag*imag == c.real*c.real+c.imag*c.imag)
            return imag>c.imag;
        else
            return real*real + imag*imag < c.real*c.real+c.imag*c.imag;
    }
};
int main(){
    int n;
    while(scanf("%d",&n)!=EOF){
        priority_queue<Complex> myPriorityQueue;
        while(n--){
            string str;
            cin >> str;
            if (str == "Pop") {
                if(myPriorityQueue.empty()) printf("empty\n");
                else{
                    Complex current = myPriorityQueue.top();//不是front()
                    myPriorityQueue.pop();
                    printf("%d+i%d\n",current.real,current.imag);
                    printf("SIZE = %d\n",myPriorityQueue.size());

                }
            }else{
                int a,b;
                scanf("%d+i%d",&a,&b);
                myPriorityQueue.push(Complex(a,b));
                printf("SIZE = %d\n",myPriorityQueue.size());
            }
        }
    }
    return 0;
}
/**

 边界值检测  牛客网上OJ漏掉了
3
Insert 3+i4
SIZE = 1
Insert 4+i3
SIZE = 2
Pop
4+i3
SIZE = 1


 */

//优先队列 哈弗曼树 P169
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int main(){
    int n;
    while(scanf("%d",&n) != EOF){
        priority_queue<int,vector<int>,greater<int> > myPriorityQueue;
        int x;
        while(n--){
            scanf("%d",&x);
            myPriorityQueue.push(x);
        }
        int answer = 0;
        while(myPriorityQueue.size() > 1){
            int a = myPriorityQueue.top();
            myPriorityQueue.pop();
            int b = myPriorityQueue.top();;
             myPriorityQueue.pop();
            answer += a+b;
            myPriorityQueue.push(a+b);
        }
        
        printf("%d\n",answer);
    }
    
    return 0;
}


全部评论

相关推荐

12-05 18:09
已编辑
广东药科大学 后端工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务