Problem 6. 贝贝的集合【算法赛】
思路
集合里面都是2的幂,消去相同的数字后,可以每次都拿最大的与最小数的操作,最后剩下的数的个数就是答案。
Accode
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 请在此输入您的代码
int n;
cin>>n;
priority_queue<int,vector<int>,greater<int>> pq;
for(int i=0;i<n;i++){
int a;
cin>>a;
pq.push(a);
}
while(pq.size()>=2){
//每次拿小根堆最小的两个数比较相同有可能得到ans是1或者2,
//则继续模拟,不同则肯定最后会剩下两个数直接输出。
int top = pq.top();
pq.pop();
if(pq.top()!=top){
cout << 2<<endl;
return 0;
}
pq.pop();
pq.push(top+1);
}
cout << 1<<endl;
return 0;
}