思路:並查集來入點,進乙個就有ans++,當成環時ans也++,標記,當兩個標記的並查集合並時不++,當乙個標記乙個不標記時,ans++,並且標記新的集合,當兩個都不標記的集合合併時,ans++,不標記。
**:
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
typedef
double db;
const
int mod=
1e9+7;
const
int maxn=
1e6;
const
double eps=
0.00000001
;int jd[maxn]
,a[maxn]
,b[maxn]
,pa[maxn]
;vector<
int>g;
intfind
(int x)
intmain()
sort
(g.begin()
,g.end()
);//雜湊化,資料過大,桶存不了。
g.erase
(unique
(g.begin()
,g.end()
),g.
end())
;//去重。
int res=0;
for(
int i=
1;i<=g.
size()
;i++
) pa[i]
=i,jd[i]=0
;for
(int i=
1;i<=n;i++
)else
} cout<<
"case #"
<<
++c<<
": "
<}}
順帶說一下k題,答案最大有1e91e51e5,ll會爆,得用in128才能過,
/(ㄒoㄒ)/~~
牛客多校 2020第八場 G Game SET
題意 輸入n種牌以及牌的屬性,任意選3張,這3張滿足4種屬性,要麼全相同,要麼全不同,是萬能牌,可以變成你想要的任意的牌,輸出3張拍的序號。題解 暴力列舉 更新一種更簡潔明瞭的 1 暴力 2 include3 include4 include5 include6 include7 include8 ...
牛客多校 2020第八場 G Game SET
題意 輸入n種牌以及牌的屬性,任意選3張,這3張滿足4種屬性,要麼全相同,要麼全不同,是萬能牌,可以變成你想要的任意的牌,輸出3張拍的序號。題解 暴力列舉 更新一種更簡潔明瞭的 1 暴力 2 include3 include4 include5 include6 include 7 include8...
牛客多校第八場
簽到題,可真短。題意 給n個數,對於每個連續子串行求區間內不同數字的個數的和。做法 一開始列舉每個區間的右端點i,判斷每個數字在區間左端點為1 i這個範圍內對右端點i的貢獻,然後累加答案,然後超時了。之後想到,每次變化範圍只會變乙個數字,只會改變乙個數字的貢獻,所以開了乙個sum記錄所有數字的貢獻就...