2018QBXT刷題遊記(16)
阿新 • • 發佈:2018-12-13
【2018QBXT刷題遊記】
Day4 TEST6
T1 subset
【題目大意】求正整數集合S最大的子集H (T組資料) 測試資料編號 資料範圍 1 – 4 1 ≤ N ≤ 16 5 – 10 1 ≤ N ≤ 1000 對於100%的資料:。
【冷靜分析】(這道題後面竟然沒有標註今天【題目難度與順序無關】?) 那一定…… 先在草稿紙上塗塗畫畫,好像滿足這種性質的數對不多啊?? 於是找規律!
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main(){ freopen("qaq.txt","w",stdout); for(int i=32;i>=1;i--) for(int j=32;j>=1;j--){ if((i^j)<min(i,j)) cout<<i<<" "<<j<<endl; } return 0; }
8以內的是這樣滴~ 8 15 8 14 8 13 8 12 8 11 8 10 8 9 8 8 7 7 7 6 7 5 7 4 6 7 6 6 6 5 6 4 5 7 5 6 5 5 5 4 4 7 4 6 4 5 4 4 3 3 3 2 2 3 2 2 1 1 【滑稽】此題結束,判斷二進位制位數即可。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define ll long long int cnt[35],n; ll tmp,maxn; int qwq(ll x){ int ret=0; while(x){ ret++; x>>=1; } return ret; } int main(){ freopen("subset.in","r",stdin); freopen("subset.out","w",stdout); while(~scanf("%d",&n)){ maxn=0; memset(cnt,0,sizeof(cnt)); for(int i=1;i<=n;i++){ scanf("%lld",&tmp); cnt[qwq(tmp)]++;} for(int i=1;i<=34;i++)maxn=maxn>cnt[i]?maxn:cnt[i]; printf("%lld\n",maxn); } return 0; }
開心,AC了。這次陣列終於沒開小!