这题真的水
比赛结束后将所有c/c++的程序的内存调为2.2mb后重测。
歧视c/c++有木有
说一下:
sort可以过
不过正解比sort更简单:
说几个思路:
我们假设总个数为
n
,众数个数为
1.随机输出
P>12
2.选点找众数
2.2MB≈2306827B
23068274≈500000=5∗105
大概可以选
5∗105
个数,共
2∗106
个数
P=C2.5∗105106C5∗1052∗106≈1
我也不会推,应该是这样吧,推错勿喷(求数论大神)。
3.莫名其妙的方法
顺便给代码。
时间
O(n)
,空间
O(1)
,
P=1
int n,t,ans,k;
int main(){
scanf("%d",&n);
while(n--)
if((scanf("%d",&t)==1)&&t!=ans)
if(k)
k--;
else
ans=t,k=1;
else
k++;
printf("%d\n",ans);
rt 0;
}
不好说原理
就试一下例题吧。
5
2 3 3 3 3
t | k | ans |
---|---|---|
2 | 1 | 2 |
3 | 0 | 2 |
3 | 1 | 3 |
3 | 2 | 3 |
3 | 3 | 3 |