傳送門html
題意:c++
有 n 個商店,第 i 個商店出售正整數 ai;ide
Dora 買了 m 天的東西,第 i 天去了 si 個不一樣的個商店購買了 si 個數;spa
Dora 的對手 Swiper 在第 i 天去了 Dora 未去的商店購買了 n-si 個數;.net
問在這m天裏,是否存在序列a,使得這 m 天都知足 LCM(Dora購買的數) > LCM(Swiper購買的數);code
題解:htm
參考自(戳)
blog
①若是存在兩天,在這兩天中獲得的數字集合不存在交集,那麼確定是無解的。
②若是任意兩天之間都存在交集時,必定有解(仍是不太理解)。ip
AC代碼:get
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e4+50; 4 5 int n,m; 6 bitset<maxn>b; 7 vector<bitset<maxn> >vs; 8 9 char *Solve() 10 { 11 for(int i=0;i < vs.size();++i) 12 for(int j=0;j < vs.size();++j) 13 if(!(vs[i]&vs[j]).any()) 14 return "impossible"; 15 return "possible"; 16 } 17 int main() 18 { 19 scanf("%d%d",&m,&n); 20 for(int i=1;i <= m;++i) 21 { 22 int tot,s; 23 scanf("%d",&tot); 24 b.reset(); 25 for(int j=1;j <= tot;++j) 26 { 27 scanf("%d",&s); 28 b.set(s); 29 } 30 vs.push_back(b); 31 } 32 puts(Solve()); 33 34 return 0; 35 }
此處代碼用到了一個STL中的一個騷操做bitset<>,詳解戳這裏;
這個操做是我在看大神代碼中看到的,tql;
STL也太強大了叭qwq!