UVa 12096 集合棧計算機

2021-09-10 13:55:03 字數 849 閱讀 4245

這題的話,我們讀入操作之後,首先對於空集就是初始化為空。

我們可以使用typedef 對於 set 重新命名為set,這樣就可以直接用set()的語法進行空集的初始化了。

這題主要是對於集合的處理,我們可以給集合乙個對映函式,這個函式對於已知集合就返回該id,讓主函式進行相應的操作。

對於未知集合就按序存入暫存區,並給該集合分配乙個id。

對於查詢這個操作,我們使用map就可以判斷。

最後我們輸出的時候,就是通過id找到集合本身,然後輸出它的大小就可以了。

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define all(x) x.begin(), x.end()

#define ins(x) inserter(x,x.begin())

typedef set <

int> set;

mapint> idcache;

vector setcache;

intid

(set x)

intmain()

s.push(id

(x));}

cout << setcache[s.

top()]

.size()

<< endl;

} cout <<

"***"

<< endl;

}return0;

}

uva 12096 集合棧計算機

uva 12096 集合棧計算機 題目 有乙個專門為了集合運算而設計的 集合棧 計算機。該機器有乙個初始為空的棧,並且 支援以下操作。push 空集 入棧。dup 把當前棧頂元素複製乙份後再入棧。union 出棧兩個集合,然後把二者的並集入棧。intersect 出棧兩個集合,然後把二者的交集入棧。...

UVa 12096 集合棧計算機

對於乙個以集合為元素的棧,初始時棧為空。輸入的命令有如下幾種 push 將空集 壓棧 dup 將棧頂元素複製乙份壓入棧中 union 先進行兩次彈棧,將獲得的集合a和b取並集,將結果壓棧 intersection 先進行兩次彈棧,將獲得的集合a和b取交集,將結果壓棧 add 先進行兩次彈棧,將獲得的...

uva12096集合棧計算機

預備知識 set 1.求交集 int a 5 int b 5 vectorc 10 一定要指定大小,否則會無法執行 vector iterator it it set union a,a 5,b,b 5,c.begin set union返回最後乙個元素後的位址,自動去重 或者it set unio...