1032. 挖掘机技术哪家强(20)
为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛。现请你根据比赛结果统计出技术最强的那个学校。
输入格式:
输入在第1行给出不超过105的正整数N,即参赛人数。随后N行,每行给出一位参赛者的信息和成绩,包括其所代表的学校的编号(从1开始连续编号)、及其比赛成绩(百分制),中间以空格分隔。
输出格式:
在一行中给出总得分最高的学校的编号、及其总分,中间以空格分隔。题目保证答案唯一,没有并列。
输入样例:6 3 65 2 80 1 100 2 70 3 40 3 0输出样例:
2 150
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int max = 0;
int[]a = new int[100001];
for(int i=0 ;i<n ;i++){
int x = sc.nextInt();
a[x] += sc.nextInt();
if(a[x]>a[max]){
max=x;
}
}
System.out.println(max+" "+a[max]);
}
}
c++代码:
#include<stdio.h>
int main(){
int a[100000]={0};
int n,x,y;
int max=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d",&x,&y);
a[x]+=y;
if(a[x]>a[max])
max=x;
}
printf("%d %d",max,a[max]);
return 0;
}
Java代码的运行结果:
c++代码运行的结果:
对比可以看出Java的前三个测试点的用时都达到了100ms以上 而c++代码运行时却用了不到5ms 。题目中的时间限制是200ms,c++代码中第4个测试点用时是前3个
测试点用时的10倍以上 ,达到了48ms,但是显然还是在200ms内的,甚至可以说远小于200ms。但是明显Java代码在第4个测试点的运行时间超过了200ms;
再举个例子:同样是pat上面的一道题
1047. 编程团体赛(20)
编程团体赛的规则为:每个参赛队由若干队员组成;所有队员独立比赛;参赛队的成绩为所有队员的成绩和;成绩最高的队获胜。
现给定所有队员的比赛成绩,请你编写程序找出冠军队。
输入格式:
输入第一行给出一个正整数N(<=10000),即所有参赛队员总数。随后N行,每行给出一位队员的成绩,格式为:“队伍编号-队员编号 成绩”,其中“队伍编号”为1到1000的正整数,“队员编号”为1到10的正整数,“成绩”为0到100的整数。
输出格式:
在一行中输出冠军队的编号和总成绩,其间以一个空格分隔。注意:题目保证冠军队是唯一的。
输入样例:6 3-10 99 11-5 87 102-1 0 102-3 100 11-9 89 3-2 61输出样例:
11 176
Java代码:
import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[]a = new int[10001];
int max = 0;
for(int i=0 ;i<n ;i++) {
String s = sc.next();
String[]s1 = s.split("-");
int x = Integer.parseInt(s1[0]);
a[x] += sc.nextInt();
if(a[x]>a[max]){
max = x;
}
}
System.out.println(max+" "+a[max]);
}
}
C++代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n ;
int max=0;
int a[10001];
int x ,y,score;
scanf("%d" ,&n);
for(int i=0 ;i<n ;i++){
scanf("%d-%d %d",&x,&y,&score);
a[x]+=score;
if(a[x]>a[max]){
max = x;
}
}
printf("%d %d\n",max,a[max]);
return 0;
}
Java运行结果:
C++运行结果:
代码并没有什么不同,但是结果很明显有很大的不同,在时间效率和内存上存在着明显的差异;