uva-12096解題原理分析及侷限性論證
本題具有一定的特殊性,在於其新集合的大小永遠大於等於先前集合,所以我們可以採用set.insert進行排列,並使用str.size()-1求得相應的id。如果本題中有類似集合減法的操作的話,本段**並不能實現這種操作。囿於時間複雜度,本題不允許遍歷查詢,所以上述減法情況以什麼方法實現仍不是很清楚。
本題的實現原理在於實現str和id間的雙射,每種集合對應唯一一種id,這種使用id的思路今後也會廣泛地使用,主要目的是解決一些難以解決地情況(例如本題中的add命令),同時也可以理清我們程式設計的思路。**中的雙射實現了查詢和引用,使得本題所有命令實現。
#include#include#include#include#include#include#include#define all(x) x.begin(),x.end()
#define ins(x) inserter(x,x.begin())
using namespace std;
typedef setset;
vectorstr;
mapid;
int t,n;
char a[10];
int getid(set x)
str.push_back(x);
return id[x]=str.size()-1;
}int main()else if(a[0]=='d')else
haha.push(getid(x));
} printf("%d\n",str[haha.top()].size());
} puts("***");
} return 0;
}
題目筆記 UVA12096
一道綜合set,map,stack的stl題目,非常有意思!include include include include include include include using namespace std intn,m typedef set jihe 棧 sta 裡存的都是int,而int所...
UVA 12096 幾種容器的使用
題目 題意 有幾種操作 如下圖 然後給定一些操作,問最後棧頂的集合中有幾個元素 define ins x inserter x,x.begin 插入迭代器 using namespace std typedef setset mapidcache 把集合對映成id vectorsetcache 根據...
劉汝佳第五章 UVa 12096
include include include include include include includeusing namespace std define ins x inserter x,x.begin define all x x.begin x.end typedef setset m...