set相當於乙個自動排序+自動去重的陣列,即插入時會自動排序,插入重複元素時不會變化。set的元素訪問需要用到迭代器,其原理可以模擬普通迴圈中的迴圈變數i。
set的模版題,set的特點在排序和去重。
#include
using
namespace std;
set<
int>a;
intmain()
printf
("%d\n"
,a.size()
);set<
int>
::iterator it;
for(it=a.
begin()
;it!=a.
end(
);it++
) it==a.
begin()
?printf
("%d"
,*it)
:printf
(" %d"
,*it)
;printf
("\n");
}return0;
}
仍然是模版題,看到「相同的數字只計算一次」就用set就對了。
#include
using
namespace std;
set<
int>a;
intmain()
set<
int>
::iterator it;
cnt=flag=0;
for(it=a.
begin()
;it!=a.
end(
);it++)}
if(flag==0)
printf
("no result\n");
return0;
}
在set中查詢元素用count函式更簡單點,但只能知道有沒有,這道題已經足夠了。
#include
using
namespace std;
seta;
intmain()
if(flag==0)
printf
("no\n");
}}return0;
}
set中的資料存放是有順序的。
這道題相當於找列車初始順序中最長單調遞減子串行的長度。換言之,如果新的一輛列車的序號大於目前所有軌道上末尾車的序號就要重開一條軌道用來排程。
#include
using
namespace std;
set<
int>a;
intmain()
printf
("%d\n",(
int)a.
size()
);return0;
}
利用count函式找到兩個數集中相同元素的個數即可,因為要求相同元素兩兩不同,所以用set。
#include
using
namespace std;
set<
int>a[51]
;int
main()
} cin>>k;
while
(k--
)return0;
}
題目很長,主要是要讀懂題目每句話的意思。
#include
using
namespace std;
const
int n=
1e3+10;
int n,m,x,k,num,type;
set<
int>s[n]
,quanji,ans;
set<
int>
::iterator it;
intmain()
}for
(int i=
1;i<=m;i++
) quanji.
insert
(i);
cin>>k;
while
(k--)}
}else}}
for(it=ans.
begin()
;it!=ans.
end(
);it++
)printf
("%d "
,*it)
;printf
("\n");
}return0;
}
這道題其實是昨天map的壓軸題,因為又寫著set,所以決定今天解決。這道題其實相當於又回到了二進位制的計算上,大佬的題解:
由於2x + 2x = 2x+1,對於乙個非降序列,我們可以向上進製得到單調遞增序列,如:
1 1 2 3 5——>2 2 3 5——>3 3 5——>4 5
由於2v-1 = 20 + 21 + 22 +……+ 2v-1,所以我們只需暴力找答案的二進位制中0的個數。
#include
using
namespace std;
int n,x,s,mx;
set<
int>ans;
map<
int,
int>vis;
intmain()
set<
int>
::iterator it;
for(it=ans.
begin()
;it!=ans.
end(
);it++
) vis[x+1]
+=k;
//合併後數的個數+k
}printf
("%d\n"
,mx+
1-ans.
size()
+s);
return0;
}
2023年2月13日 林大OJ習題 優先佇列
優先佇列是一種特殊的佇列,當元素入隊時不一定排在隊尾,而是根據規定的優先順序順序插入到不同的位置,相當於每插入乙個元素時根據優先順序對所有元素重新排序。規定優先順序的方式與sort函式相似,用greater與less,需要注意的是含義相反。priority queue int,vector int ...
2023年2月8日 OJ習題
這類題的常規思路是結構體排序,但是本題由於並沒有多種元素,因此用不著結構體,僅僅是陣列排序就可以 include using namespace std int n,m,o int f 110 bool cmp int a,int b intmain return0 先打表,然後直接些就好了 inc...
課程總結 2023年12月18日
不知不覺第二週的課程也已經結束了,不得不說這兩周來確實是過得比較充實,這週從軟測知識基礎開始到測試設計,不論是理論還是實踐方面都學了不少東西,結果上來說的話,還需要反覆複習和更多的練習,才能較為熟練地掌握比較規範的測試方法。同樣的,先回顧一下18號當天的學習內容。新知識的話主要是和測試用例有關的方方...