本题数据过弱……
查看原帖
本题数据过弱……
581830
Jasper08楼主2022/6/18 16:40

rt,歪解跑得比题解(@Vocalise)还快,均开了 O2 .

题解:(597ms)

#include<cstdio>
#include<iostream>

const int p=100007,q=10009,pq=100001;
int n,Hash[pq+1];
inline int hash(const int &x){
    return ((x%p)*(x%q))%pq;
}

int main(){
    std::cin>>n;
    for(register int i=1,a;i<=n;i++){
      std::scanf("%d",&a);
      if(++Hash[hash(a)]>(n>>1)){
        std::printf("%d\n",a);
        return 0;
      }
    }
}

本人写的歪解:(111ms)

//P2397 yyy loves Maths VI (mode)

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>

using namespace std;

#define ll long long
#define endl '\n'

const int N = 1e4+7;

int num[N];

inline int read() {
	int x = 0, f = 1;
	char ch = getchar();
	while (ch > '9' || ch < '0') {
		if (ch == '-')
			f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + ch - '0';
		ch = getchar();
	}
	return x*f;
}

int main() {
	int n = read();
	map<int, int> num;
	for (int i = 1; i <= n; ++i) {
		int tmp = read();
		num[tmp%N] ++;
		if (num[tmp%N] >= n/8) { //甚至写成1/8都能过
			cout << tmp << endl;
			return 0;
		}
	}
	return 0;
}
2022/6/18 16:40
加载中...