题解 | #复数集合# 小根堆,大根堆的应用

复数集合

https://www.nowcoder.com/practice/abdd24fa839c414a9b83aa9c4ecd05cc

#include <cstdio>
#include <iostream>
#include <queue>
#include <string>
#include <vector>
using namespace std;

int n;

struct Complex{
    int real;
    int imag;
};

bool operator < (Complex a, Complex b)
{
    return a.real * a.real + a.imag * a.imag < b.real * b.real + b.imag * b.imag;
}

int main() {
    while(scanf("%d", &n) != EOF)
    {
        priority_queue<Complex> my;  //优先队列默认是大根堆,小根堆为priority_queue<Complex, vector<Complex>, greater<Complex>> my, 注意在定义小根堆时要重载运算符 > 而不是 <
        
        for(int i = 0; i < n; i++)
        {
            char action[30];
            scanf("%s", action);
            string action1 = action;

            if(action1 == "Pop")
            {
                if(my.empty())
                    puts("empty");
                else
                {
                    printf("%d+i%d\n", my.top().real, my.top().imag);
                    my.pop();
                    printf("SIZE = %d\n", my.size());
                }
            }
            else if(action1 == "Insert")
            {
                int re, im;
                scanf("%d+i%d", &re, &im);
                Complex com;
                com.real = re, com.imag = im;
                my.push(com);
                printf("SIZE = %d\n", my.size());
            }
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务