首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【HDU】1029 - Ignatius and the Princess IV(STL || 思维)

【HDU】1029 - Ignatius and the Princess IV(STL || 思维)

作者头像
FishWang
发布2025-08-27 09:48:38
发布2025-08-27 09:48:38
10700
代码可运行
举报
运行总次数:0
代码可运行

点击打开题目

Ignatius and the Princess IV

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32767 K (Java/Others) Total Submission(s): 26910 Accepted Submission(s): 11413

Problem Description

"OK, you are not too bad, em... But you can never pass the next test." feng5166 says. "I will tell you an odd number N, and then N integers. There will be a special integer among them, you have to tell me which integer is the special one after I tell you all the integers." feng5166 says. "But what is the characteristic of the special integer?" Ignatius asks. "The integer will appear at least (N+1)/2 times. If you can't find the right integer, I will kill the Princess, and you will be my dinner, too. Hahahaha....." feng5166 says. Can you find the special integer for Ignatius?

Input

The input contains several test cases. Each test case contains two lines. The first line consists of an odd integer N(1<=N<=999999) which indicate the number of the integers feng5166 will tell our hero. The second line contains the N integers. The input is terminated by the end of file.

Output

For each test case, you have to output only one line which contains the special number you have found.

Sample Input

代码语言:javascript
代码运行次数:0
运行
复制
   5
1 3 2 3 3
11
1 1 1 1 1 5 5 5 5 5 5
7
1 1 1 1 1 1 1

Sample Output

代码语言:javascript
代码运行次数:0
运行
复制
   3
5
1

Author

Ignatius.L

两种方法:

①STL - map存数的个数,在输入的时候就处理完成,然后输出就行了。

②把n个数sort一下,中间那个数就是结果。

代码如下:

第一种方法:

代码语言:javascript
代码运行次数:0
运行
复制
#include <cstdio>
#include <cstring>
#include <map>
#include <algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
int main()
{
	int n;
	while (~scanf ("%d",&n))
	{
		map<int,int> ant;
		int maxx = (n + 1) >> 1;
		int ans;
		int t;
		while (n--)
		{
			scanf ("%d",&t);
			ant[t]++;
			if (ant[t] >= maxx)
				ans = t;
		}
		printf ("%d\n",ans);
	}
	return 0;
}

第二种方法:

代码语言:javascript
代码运行次数:0
运行
复制
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define MAX 1000000
int num[MAX+11];
int main()
{
	int n;
	while (~scanf ("%d",&n))
	{
		for (int i = 1 ; i <= n ; i++)
			scanf ("%d",&num[i]);
		sort(num+1,num+1+n);
		printf ("%d\n",num[(n+1)>>1]);
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ignatius and the Princess IV
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档