首先附AC代码
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+10;
int a[N],n,x,maxn;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
a[x]++;
maxn=max(a[x],maxn);
}
cout<<maxn<<endl;
return 0;
}
思路讲解(抄自qq聊天记录,给同学讲的)
A:对了,就是等价替换嘛
A:看看哪个数出现的次数最多就行了。
A:因为是这样的,这个数就算不是最大的,但是比他大的的攻击了他,最大的就替换了他。
A:如果本来就是最大的,因为没有能攻击他的,也是一样的。
Q:?
Q:那要是11111113呢?
A:3打了一个1,替换了1,所以答案就是7。
Q:卧槽。
Q:还真是。
Q:11112222333445
A:2222替换1111
Q:2替换1
A:333替换3个2
Q:3替换,然后45再看。
Q:我去。sto orz