牛客網 複數集合(小根堆的優先佇列、北郵機試)
題目描述
一個複數(x+iy)集合,兩種操作作用在該集合上: 1、Pop 表示讀出集合中複數模值最大的那個複數,如集合為空 輸出 empty ,不為空就輸出最大的那個複數並且從集合中刪除那個複數,再輸出集合的大小SIZE; 2 Insert a+ib 指令(a,b表示實部和虛部),將a+ib加入到集合中 ,輸出集合的大小SIZE; 最開始要讀入一個int n,表示接下來的n行每一行都是一條命令。
輸入描述:
輸入有多組資料。
每組輸入一個n(1<=n<=1000),然後再輸入n條指令。
輸出描述:
根據指令輸出結果。
模相等的輸出b較小的複數。
a和b都是非負數。
示例1
輸入
3
Pop
Insert 1+i2
Pop
輸出
empty
SIZE = 1
1+i2
SIZE = 0
Solution
優先佇列預設大根堆,這裡使用小根堆的優先佇列,struct過載小於號即可,注意過載的形式不能錯。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std;
const int maxn = 1111;
struct Complex_num
{
int a, b;
// 使用queue排序時一定要用
// bool operator<(const Class &tmp)cosnt這種格式
bool operator<(const Complex_num &t) const
{
return a * a + b * b < t.a * t.a + t.b * t.b;
}
};
int main()
{
freopen("in.txt", "r", stdin);
int T;
char str[10];
priority_queue<Complex_num> Q;
scanf("%d", &T);
while (T--)
{
scanf("%s", str);
Complex_num tmp;
if (strcmp(str, "Pop") == 0)
{
if (Q.size() == 0)
printf("empty\n");
else
{
tmp = Q.top();
printf("%d+i%d\n", tmp.a, tmp.b);
Q.pop();
printf("SIZE = %d\n", int(Q.size()));
}
}
else if (strcmp(str, "Insert") == 0)
{
scanf("%d+i%d", &tmp.a, &tmp.b);
Q.push(tmp);
printf("SIZE = %d\n", int(Q.size()));
}
}
return 0;
}
相關文章
- java使用PriorityQueue即優先佇列實現大根堆和小根堆Java佇列
- 牛客網 比較奇偶個數(水、北郵機試)
- 2020/12/5 棧佇列堆(牛客網)佇列
- 2020/12/9 棧佇列堆(牛客網)佇列
- 堆與優先佇列佇列
- 牛客網 找最小數(sort結構體查詢、北郵機試)結構體
- 牛客網 二進位制數(進位制轉換、北郵機試)
- 牛客網 查詢(二分查詢、北郵機試)
- 堆、堆排序和優先佇列的那些事排序佇列
- 二叉堆實現優先佇列佇列
- 手擼優先佇列——二叉堆佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- PHP優先佇列PHP佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- 演算法面試(三) 優先佇列演算法面試佇列
- STL 優先佇列 用法佇列
- 淺談優先佇列佇列
- 優先佇列的比較器佇列
- 大根堆和小根堆的介紹
- 『演算法與資料結構』優先佇列 二叉堆演算法資料結構佇列
- 優先佇列和堆排序佇列排序
- 【牛客網機試】和為S的連續正數序列
- 牛客網--華為機試題
- leetcode621——優先佇列的思路LeetCode佇列
- 01揹包優先佇列優化佇列優化
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 基於EasyNetQ封裝RabbitMQ,優先順序郵件服務佇列封裝MQ佇列
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列
- 封裝優先順序佇列封裝佇列
- 關於樹的資料結構(二分搜尋樹,堆和優先佇列)資料結構佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- STL優先佇列最小堆最大堆佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 堆、棧以及佇列佇列
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- C++ STL 優先佇列 (priority_queue)C++佇列