其他分享
首页 > 其他分享> > HDU-1029 Ignatius and the Princess IV

HDU-1029 Ignatius and the Princess IV

作者:互联网

问题描述

有N个整数,N为奇数,找出至少出现\(\frac {(N+1)}{2}\)次的数。

分析

采用的是暴力统计,排序,取位置,对应到计数数组的下标来递增,熟练了lower_bound的使用。

代码

// 离散化的思路是可以一次做出来,但是放到动态规划专题
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int N;
const int MAXN = 1000010;
int num[MAXN];
int cnt[MAXN];
int main() {
	while (scanf("%d", &N) == 1) {
		for (int i = 1; i <= N; i++) {
			scanf("%d", &num[i]);
			cnt[i] = 0;
		}
		sort(num + 1, num + 1 + N);
		for (int i = 1; i <= N; i++) {
			int order = lower_bound(num + 1, num + 1 + N, num[i]) - num;
			cnt[order]++;
		}
		int which = 0;
		for (int i = 1; i <= N; i++) {
			if (cnt[i] >= (N + 1) / 2) {
				which = i;
				break;
			}
		}
		printf("%d\n", num[which]);
	}
	return 0;
}

标签:HDU,int,1029,IV,num,MAXN,printf,include
来源: https://www.cnblogs.com/to-phoenix-zhw/p/14278351.html