USACO铜组测试1

第一题 ABC问题

问题描述

Farmer John 的奶牛正在 “mooZ” 视频会议平台上举行每日集会。她们发明了一个简单的数字游戏,为会议增添一些乐趣。
Elsie 有三个正整数 A、B 和 C(A <= B <= C)。这些数字是保密的,她不会直接透露给她的姐妹 Bessie。她告诉 Bessie 七个范围在 1...1 0 9 1 ... 10^9 1...109 之间的整数(不一定各不相同),并宣称这是 A、B、C、A+B、B+C、C+A 和 A+B+C 的某种排列。
给定这七个整数,请帮助 Bessie 求出 A、B 和 C。可以证明,答案是唯一的。

输入格式

输入一行,包含七个空格分隔的整数。

输出格式

输出 A、B 和 C,用空格分隔。

输入样例

2 2 11 4 9 7 9

输出样例

2 2 7

测试点性质

测试点 2-3 满足 C <= 50。
测试点 4-10 没有额外限制。

分析:这题,数据一排序就出来了,A和B是最前的,而最后一个一定是A+B+C

代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
	freopen("abc.in","r",stdin);
	freopen("abc.out","w",stdout);
	long long a[10];
	memset(a,0,sizeof(a));
	for(int i=1;i<=7;++i){
		cin>>a[i];
	}
	sort(a+1,a+8);
	cout<< a[1] << " " << a[2] << " " << a[7]-a[1]-a[2] << endl; 
	fclose(stdin);
	fclose(stdout);
	return 0;
}

第二题 雏菊花环

问题描述

每天,作为她绕农场行走的一部分,奶牛 Bessie 会经过她最喜爱的草地,其中种有 N 朵花(五颜六色的雏菊),编号为 1 … N 1…N 1N 1 ≤ N ≤ 100 1≤N≤100 1N100),排列成一行。花 i 有 p i p_i pi 朵花瓣( 1 ≤ p i ≤ 1000 1≤p_i≤1000 1pi1000)。
作为一名崭露头角的摄影家,Bessie 决定给这些花拍些照片。具体地说,对于每一对满足 1 ≤ i ≤ j ≤ N 1≤i≤j≤N 1ijN 的花 (i,j),Bessie 会给从花 i 到花 j 之间的所有花(包括 i 和 j)拍一张照。
后来 Bessie 查看这些照片时注意到有些照片里存在「平均」的花——一朵恰好有 P 朵花瓣的花,其中 P 等于照片中所有花的花瓣数量的平均值。
Bessie 的照片中有几张存在平均的花?

输入格式

输入的第一行包含 N。第二行包含 N 个空格分隔的整数 p 1 … p N p_1…p_N p1pN

输出格式

输出存在平均的花的照片数量。

输入样例

4
1 1 2 3

输出样例

6

样例说明

每张仅包含一朵花的照片均会被计入答案(在这个样例中有 4 张)。另外,在这个样例中 (i,j) 为 (1,2) 和 (2,4) 所对应的照片也存在平均的花。

分析:照着题目来就行了,闭着身上所有的眼都能做出来

注:均值p是浮点数

代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
	freopen("daisy.in","r",stdin);
	freopen("daisy.out","w",stdout);
	long long n,a[110],ans=0;
	memset(a,0,sizeof(a));
	cin>>n;
	ans+=n;
	for(int i=1;i<=n;++i){
		cin>>a[i];
	}
	for(int i=2;i<=n;++i){
		for(int j=1;j<=n-i+1;++j){
			double p=0;
			for(int k=1;k<=i;++k){
				p+=a[j+k-1];
			}
			p/=i;
			for(int l=1;l<=i;++l){
				if(p==a[j+l-1]){
					ans++;
					break;
				}
			}
		}
	}
	cout<< ans << endl;
	fclose(stdin);
	fclose(stdout);
	return 0;
}

第三题 一成不变

问题描述

Farmer John 最近扩大了他的农场,从奶牛们的角度看来这个农场相当于是无限大了!奶牛们将农场上放牧的区域想作是一个由正方形方格组成的无限大二维方阵,每个方格中均有美味的草(将每个方格看作是棋盘上的一个方格)。Farmer John 的 N 头奶牛( 1 ≤ N ≤ 50 1≤N≤50 1N50)初始时位于不同的方格中,一部分朝向北面,一部分朝向东面。
每一小时,每头奶牛会执行以下二者之一:
如果她当前所在的方格里的草已经被其他奶牛吃掉了,则她会停下。
吃完她当前所在的方格中的所有草,并向她朝向的方向移动一个方格。
经过一段时间,每头奶牛的身后会留下一条被啃秃了的轨迹。
如果两头奶牛在一次移动中移动到了同一个有草的方格,她们会分享这个方格中的草,并在下一个小时继续沿她们朝向的方向移动。
请求出每头奶牛吃到的草的数量。有些奶牛永远不会停下,从而吃到无限多的草。
输入格式
输入的第一行包含 N。以下 N 行,每行描述一头奶牛的起始位置,包含一个字符 N(表示朝向北面) 或 E(表示朝向东面),以及两个非负整数 x 和 y表示方格的坐标。所有 x 坐标各不相同,所有 y 坐标各不相同。
为了使方向和坐标尽可能明确,如果一头奶牛位于方格 (x,y) 并向北移动,她会到达方格 (x,y+1)。如果她向东移动,她会到达方格 (x+1,y)。

输出格式

输出 N 行。输出的第 i 行包含输入中的第 i 头奶牛吃到草的方格的数量。如果一头奶牛可以吃到无限多的草,为这头奶牛输出 “Infinity”。

输入样例

6
E 3 5
N 5 3
E 4 6
E 10 4
N 11 2
N 8 1

输出样例

5
3
Infinity
Infinity
2
5

测试点性质

测试点 2-5 中,所有坐标不超过 100。
测试点 6-10 没有额外限制。

分析:本题其实有点难,就算你能解决无限草场问题,还有一个截胡问题(本可以拦截住,但自己被其他牛堵住),本人就写了个十分的,还没理解

代码:10分

#include <bits/stdc++.h>
using namespace std;

long long n,a[60][5],x[60];

int main(){
	freopen("stuct.in","r",stdin);
	freopen("stuct.out","w",stdout);
	memset(a,0,sizeof(a));
	memset(x,0,sizeof(x));
	cin>>n;
	for(int i=1;i<=n;++i){
		char p;
		cin>>p;
		if(p=='N'){
			a[i][1]=1;
		}else{
			a[i][1]=2;
		}
		cin>>a[i][2]>>a[i][3];
	}
	for(int i=1;i<=n;++i){
		if(a[i][1]==1){
			for(int j=1;j<=n;++j){
				if(a[i][3]<a[j][3]&&a[j][1]==2&&a[i][2]>a[j][2]){
					if(a[i][2]-a[j][2]<a[j][3]-a[i][3]){
						x[i]=a[j][3]-a[i][3];
					}
				}
			}
		}else if(a[i][1]==2){
			for(int j=1;j<=n;++j){
				if(a[i][2]<a[j][2]&&a[j][1]==1&&a[j][3]<a[i][3]){
					if(a[j][2]-a[i][2]>a[i][3]-a[j][3]){
	 					x[i]=a[j][2]-a[i][2];
					}
				}
			}
		}
	}
	for(int i=1;i<=n;++i){
		if(x[i]!=0){
			cout<< x[i] << endl;
		}else{
			cout<< "Infinity" << endl;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

USACO Train测试数据是用于评估和训练美国计算机奥林匹克竞赛(USACO)参赛学生计算机编程能力的一系列数据集。这些测试数据包含多个问题和相应的输入输出样例,学生需要根据题目要求编写程序来解决问题,并通过测试数据来验证程序的正确性。 USACO Train测试数据的目的是让参赛学生熟悉比赛的常见问题类型,并提供高质量的测试样例来帮助学生评估自己的解决方案。测试数据通常会涵盖广泛的主题,包括算法,数据结构,动态规划等。 参赛学生可以使用USACO Train测试数据进自我评估和训练。在提交解答之前,学生可以使用测试数据来测试自己的程序,确保其正确性。通过与测试数据相比较,学生能够检测出潜在的错误和边界情况,提高自己的解决问题的能力和编程技巧。 USACO Train测试数据是参赛学生的重要资源,可以帮助他们更好地准备比赛。通过不断练习和尝试解决测试数据的问题,学生能够提高自己的编程能力,解决实际问题的能力和思维灵活性。 总之,USACO Train测试数据是提供给参赛学生的一系列用于训练和评估计算机编程能力的测试样例。这些测试数据能够帮助学生熟悉比赛常见问题类型,并提供高质量的测试样例来衡量解决方案的正确性。通过使用这些测试数据,学生可以提高自己的解决问题的能力和编程技巧,更好地准备和参加USACO竞赛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lyoi20210204

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

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

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

打赏作者

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

抵扣说明:

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

余额充值