恩 ,做完了就要寫(xiě)下來(lái) 省的之后忘了
昨天看的misof的教程 關(guān)于數(shù)~ 今天做了其中的提到的例題:
BorelSe:
simple的題~第一次沒(méi)搞對(duì),搞完后發(fā)現(xiàn)還是寫(xiě)麻煩了。題目中明確說(shuō)明,也顯而易見(jiàn)的是空集和全集一定是B集里的 ,我還費(fèi)心去處理空集。。。
其次,重復(fù)的數(shù)字不用處理,因?yàn)橛玫氖腔虿僮鳌?/div>
剩下的就是用一個(gè)數(shù)組和一個(gè)set不斷循環(huán)了,其實(shí)用隊(duì)列效果很好的,恩···

試試看~tc.BorelSe
1 int howMany(int size, vector <string> sub)
2 {
3 set<int> q;q.clear();string str;
4 int mask=(1<<size)-1;
5 VI C;
6 REPV(sub,i){
7 if(sub[i]=="")C.push_back(0),q.insert(0);
8 else{
9 set<int> vec;
10 stringstream ss(sub[i]);str="";
11 while(ss>>str) {
12 if(str=="")vec.insert(0);
13 else vec.insert(atoi(str.c_str())-1);
14 }
15
16 int now=0;
17 for(set<int>::iterator it=vec.begin();it!=vec.end();it++){
18 now|=(1<<(*it));
19 }
20 if(q.count(now)==0) C.push_back(now),q.insert(now);
21 }
22 }
23 int last=q.size();
24 while(true){
25 REPV(C,i)
26 {
27 int s=C[i]^mask;if(q.count(s)==0)C.push_back(s),q.insert(s);
28 REP(j,i)
29 {
30 int k= C[i]|C[j];
31 if(q.count(k)==0)C.push_back(k),q.insert(k);
32 }
33 }
34 if(last==q.size())return last;
35 else last=q.size();
36 }
37 }關(guān)于數(shù)字:
2的n次方 換算成 10的次方 大概是 n/3 數(shù)量級(jí)的 也就是說(shuō) 取 n/3+1 大小就可以了
這個(gè)是double 的數(shù)據(jù)
呵呵~~ just test
#include<iostream>
using namespace std;
int main()
{
cout<<"hello world~"<<endl;
return 0;
}