赛题分析

赛题分析

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1186 Accepted Submission(s): 575

Problem Description
著名出题人小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了该题的队伍数和每个队伍的代码长度,求:每题验题人最短代码长度和每题队伍最短代码长度。

问题分析:

这道题难在录入多组数据。因此用一个小技巧,本来数组内长度要填入一个常数,但是我们稍微换一个不这么“”严谨“”的编译器就可以啦。

程序说明:

用数组录入多组数据,由于只用到最短的代码长度,所以我们可以在录入时 不断判断大小覆盖掉用来保存数量的n[t]和m[t]中。最后按格式输出。

AC通过的C语言程序如下:

   #include <stdio.h>
#include<iostream>
 using namespace std;
 int main()
 {
 	int t;
 	cin>>t;
 	int n[t],m[t]; 
 	int a,b;
 	for(int j = 0;j<t;j++)
	 {
	 	b = 65537;
	 	cin>>n[j]>>m[j];
 	 	for(int i = 0;i<n[j];i++)
 		{
 			cin>>a;
 			b<a? b=b:b=a;
		}
		n[j] = b;
		b = 65537;
		for(int i = 0;i<m[j];i++)
		{
			cin>>a;
			b<a? b=b:b=a; 
		}
		m[j] = b;
	}
	for(int i = 1;i<=t;i++)
	{
		cout<<"Problem "<<1000+i<<":\n";
		cout<<"Shortest judge solution: "<<n[i-1]<<" bytes.\n";
		if(m[i-1] == 65537)cout<<"Shortest team solution: N/A bytes.\n";
		else cout<<"Shortest team solution: "<<m[i-1]<<" bytes.\n";
 	
	}
	return 0;
 }

你可能感兴趣的:(C++解决的算法题)