G - Problem G HDU - 6292

著名出题人小Q每次比赛后都会写一份《赛题分析》,包含比赛概况、每题的参考算法以及一些统计数值。

对于一道题来说,小Q会统计最短的验题人代码长度(Shortest judge solution)以及赛内参赛队伍最短的AC代码长度(Shortest team solution)。

统计验题人代码长度比较容易,因为验题人最多也不会超过20个。但是统计选手代码长度就不容易了,因为大赛区动辄三四百支队伍。

请写一个程序,帮助小Q统计最短代码长度。
Input
第一行包含一个正整数T(1≤T≤13),表示赛题数量。

每道题第一行包含两个整数n,m(2≤n≤20,0≤m≤500),分别表示验题人数量以及AC了该题的队伍数量。

第二行包含n个正整数a1,a2,…,an(50≤ai≤65536),依次表示每个验题人的代码字节数。

第三行包含m个正整数b1,b2,…,bn(50≤bi≤65536),依次表示每支AC队伍的代码字节数。若m=0则该行为空行。
Output
对于第i(1≤i≤T)道题,输出三行,第一行输出Problem x:,其中x=i+1000。

第二行输出Shortest judge solution: y bytes.,其中y表示最短的验题人代码字节数。

第三行输出Shortest team solution: z bytes.,其中z表示最短的选手代码字节数,若不存在请输出N/A。

注意:间隔都是一个空格。
Sample Input
2
3 2
3627 1460 5288
2365 2671
2 0
5510 7682
Sample Output
Problem 1001:
Shortest judge solution: 1460 bytes.
Shortest team solution: 2365 bytes.
Problem 1002:
Shortest judge solution: 5510 bytes.
Shortest team solution: N/A bytes.

问题链接

问题简述:
读入问题人代码字节数和AC队伍代码字节数。把最小的算出来输出。

问题分析:
用数组读入后进行比较。

AC的C++ 程序如下:

#include<iostream>
using namespace std;
int main()
{
	int a, b, c, d, x = 0, m = 0;
	int o[300]; int v[800]; int k[900];
	cin >> a;
	for (int i = 1; i <= a; i++)
	{
		cin >> b >> c;
		for (int x = 0; x<b; x++)
			cin >> o[x];
		for (int m = 0; m<c; m++)
			cin >> v[m];
		for (int j = b-1; j>0; j--)
			if (o[j] < o[j - 1])
			{
				o[j-1] = o[j];
			}
		for (int w = c-1; w >0; w--)
			if (v[w] < v[w - 1])
			{
				v[w - 1] = v[w];
			}
		cout << "Problem " << i + 1000 << ":" << endl;
		cout << "Shortest judge solution: " << o[0] << " bytes." << endl;
		if (c>0)
			cout << "Shortest team solution: " << v[0] << " bytes." << endl;
		else cout << "Shortest team solution:" << " N/A bytes." << endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43966523/article/details/85010296