USACO2013nov_bonze名称记录

本文介绍了一个USACO竞赛题目,任务是统计奶牛进入谷仓产奶的频率,通过hash函数和排序算法,找出出现次数最多的奶牛组合。此问题涉及到数据结构和算法设计,特别是hash表和数组排序的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[usaco2013nov_bronze]records

描述 Description

Records
Farmer John对他的每一头进入谷仓产奶的奶牛都有详细的记录,每小时有一组牛进入,每组有三头牛。Farmer John会记下他们的名字。比如说:经过五小时,他可能会写下下列名单,每一行对应一组进入谷仓的奶牛:
BESSIE ELSIE MATILDA
FRAN BESSIE INGRID
BESSIE ELSIE MATILDA
MATILDA INGRID FRAN
ELSIE BESSIE MATILDA
每一组牛都可能在Farmer John的名单上出现多次,比如:BESSIE , ELSIE , MATILDA出现了三次(Farmer John没必要每次都按相同的顺序记录他们的名字)。
请帮助Farmer John统计出那组牛进入谷仓的次数最多。

输入格式 Input Format

第一行:一个数字N,代表已经记录几个小时;(1 <= N <= 1000)
第2…1+N 行每行有三个奶牛的名字,分别用空格隔开。每一个名字不超过10个字母,而且字母都在A…Z之间。

输出格式 Output Format

一行,输出进入谷仓最多的次数

样例输入 Sample Input

5
BESSIE ELSIE MATILDA
FRAN BESSIE INGRID
BESSIE ELSIE MATILDA
MATILDA INGRID FRAN
ELSIE BESSIE MATILDA

样例输出 Sample Output

3

时间限制 Time Limitation

1s

注释 Hint

这组{BESSIE, ELSIE, MATILDA} 进入最多

来源 Source

usaco 2013 dec bronze
本题翻译来自2015届李强

啊,这道题看着范围就很水,hash一下存数组里n2n^2n2比较得出答案就行,我们考虑到一个名字可能会出现在不同的奶牛组里,我们将一组奶牛hash存到一个竖直长度只有3的二维数组中,每次存完排一下序,这样保证在 比较的时候能一一对应

#include<bits/stdc++.h>

#define ll long long

using namespace std;

ll n, a[1010][3];

ll hash(char c[]){
	int k = strlen(c);
	ll r = 0;
	for(int i = 0; i < k; ++i){
		r = r * 10 + c[i] - 'A';
	}
	
	return r;
}

char c1[15], c2[15], c3[15];

int main()
{
	scanf("%lld", &n);
	
	for(int i = 1; i <= n; ++i){
		scanf("%s%s%s", c1, c2, c3);
		a[i][0] = hash(c1); 
		a[i][1] = hash(c2); 
		a[i][2] = hash(c3);
		sort(a[i], a[i] + 3);
	}
	
	int ans = 0;
	for(int i = 1; i <= n; ++i){
		int num = 0;
		for(int j = 1; j <= n; ++j){
			if(a[i][0] == a[j][0] && a[i][1] == a[j][1] && a[i][2] == a[j][2])
				++num;
			ans = max(ans, num);
		}
	}
	
	printf("%d\n", ans);
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BIGBIGPPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值