牛客網 複數集合(小根堆的優先佇列、北郵機試)
題目描述
一個複數(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佇列
- 堆--優先佇列佇列
- 牛客網 找最小數(sort結構體查詢、北郵機試)結構體
- 堆與優先佇列佇列
- 堆和優先佇列佇列
- 牛客網 二進位制數(進位制轉換、北郵機試)
- 牛客網 查詢(二分查詢、北郵機試)
- 堆——神奇的優先佇列(上)佇列
- 二叉堆優先佇列佇列
- 2020/12/9 棧佇列堆(牛客網)佇列
- 2020/12/5 棧佇列堆(牛客網)佇列
- 堆和堆的應用:堆排序和優先佇列排序佇列
- 堆、堆排序和優先佇列的那些事排序佇列
- 優先佇列的一種實現方式—堆佇列
- 優先佇列的效能測試佇列
- 二叉堆實現優先佇列佇列
- 手擼優先佇列——二叉堆佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- 【資料結構】回顧優先佇列(堆)資料結構佇列
- hdu 4546 優先佇列 數列組合和第m小佇列
- 找最小的k個數(優先佇列)佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- STL醜數(set+優先佇列)佇列
- PHP優先佇列PHP佇列
- 優先佇列 (轉)佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- 淺談優先佇列佇列
- STL 優先佇列 用法佇列
- 優先佇列的比較器佇列
- 優先佇列和堆排序佇列排序
- 堆排序與優先佇列排序佇列
- Java優先佇列(PriorityQueue)示例Java佇列
- 『演算法與資料結構』優先佇列 二叉堆演算法資料結構佇列
- 01揹包優先佇列優化佇列優化
- java資料結構基礎-利用Heap(堆)實現PriorityQueue(優先佇列)Java資料結構佇列
- 棧,佇列,優先順序佇列簡單介面使用佇列
- Redis實現任務佇列、優先順序佇列Redis佇列
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列