UVA 12096解題原理分析及侷限性論證

2021-09-25 16:50:46 字數 852 閱讀 2178

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...