Luogu和Codeforces对接不上了吗…
一道水题,可以想到用计数的思想每次把最大的偶数除以2,再取消标记就能轻松解决
标记用 m a p map map
#include <bits/stdc++.h>
using namespace std;
int a[200010];
bool cmp(const int &a,const int &b) { return a>b; }
int main() {
int t,n;
scanf("%d",&t);
while(t--) {
int k=0;
map<int,int> m;
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",&a[i]),m[a[i]]=1;
sort(a+1,a+n+1,cmp);
for(int i=1; i<=n; i++) {
if((a[i]&1)==0&&m[a[i]]) {
while((a[i]&1)==0) {
m[a[i]]=0;
a[i]>>=1;
k++;
}
}
}
printf("%d\n",k);
}
return 0;
}