#include <iostream>
#include <vector>
#include <set>
using namespace std;
int count(vector<int> &A){
set<int> s;
int n=0;
for(int i=0; i<A.size(); ++i){
n=0;
int k = A[i];
while(k > 0){
if(k & 0x1)
++n;
k = k>>1;
}
s.insert(n);
}
return s.size();
}
int main(){
int N=0;
int n=0;
int tmp=0;
vector<vector<int> > AA;
cin >> N;
for(int i=0; i<N; ++i){
AA.push_back(vector<int>());
cin >> n;
for(int j=0; j<n; ++j){
cin >> tmp;
AA[i].push_back(tmp);
}
}
for(int i=0; i<AA.size(); ++i){
cout << count(AA[i]) << endl;
}
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
struct X{
int m;
int t;
int m1;
int t1;
int m2;
int t2;
};
int go(int m, int t, int m1, int t1, int m2, int t2){
bool s1 = true;
bool s2 = true;
int res = 0;
int i = 1; //分钟数
while(i <= t){
int d = 0; //增量
if(s1)
d += 1*m1;
if(s2)
d -= 1*m2;
res += d;
if(res < 0)
res = 0;
if(res > m)
res = m;
if(i % t1 == 0)
s1 = s1 ? false : true;
if(i % t2 == 0)
s2 = s2 ? false : true;
++i;
}
return res;
}
int main(){
int T = 0;
vector<X> A;
cin >> T;
for(int i=0; i<T; ++i){
X x;
cin >> x.m >> x.t >> x.m1 >> x.t1 >> x.m2 >> x.t2;
A.push_back(x);
}
for(int i=0; i<T; ++i){
X &x = A[i];
cout << go(x.m, x.t, x.m1, x.t1, x.m2, x.t2) << endl;
}
return 0;
}
https://www.jianshu.com/p/1dd6540cc99f
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int func(string &s, int k=2){
if(s.size() < 1)
return 0;
int start = 0, end = 0, res = 0;
int charNum[26] = {0};
charNum[s[0]-'A']++;
while(s.size() > end){
int maxChar = 0;
for(int i=0; i<26; ++i){
if(charNum[i] > maxChar)
//maxChar = charNum[i];
maxChar = charNum['N'-'A'];
}
if(maxChar + k > end - start){
end++;
if(end < s.size())
charNum[s[end]-'A']++;
}
else{
charNum[s[start]-'A']--;
start++;
}
if(maxChar + k > res)
res = maxChar + k <= s.size() ? maxChar + k : s.size();
}
return res;
}
int main(){
vector<string> A;
int T = 0;
cin >> T;
for(int i=0; i<T; ++i){
string s;
cin >> s;
A.push_back(s);
}
for(int i=0; i<T; ++i)
cout << func(A[i]) << endl;
return 0;
}