题目描述:
![](https://img-blog.csdnimg.cn/direct/388615d89d804b4d91cd7e0347731d05.png)
样例和说明:
思路:
用两个map替换即可,对于判断结束,直接暴力解决,最大的数也就10的9次方,要是x最小为2,大概遍历个十多次就可以达到,所以cnt直接取20
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map<ll,ll> mymap[2];//替换
int main() {
ll n,m;
cin>>n;
for(int i=0;i<n;i++){
cin>>m;
mymap[0][m]++;
}
cin>>m;
ll maxx= mymap[0].count(m) ? mymap[0][m]:0;
int cnt=20;
while(cnt--){
for(const auto p:mymap[0]){
mymap[1][ceil(p.first/3.0)]+=2*p.second;
}
mymap[0]=mymap[1];
mymap[1].clear();
maxx=max(maxx,mymap[0].count(m)?mymap[0][m]:0);
}
cout<<maxx<<endl;
return 0;
}