浙大PAT 1012题 1012. The Best Rank

2024-02-26 22:18
文章标签 浙大 1012 pat rank best

本文主要是介绍浙大PAT 1012题 1012. The Best Rank,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间复杂度O(n^2),当n=2000时,复杂度为400 0000,本以为过不了。
但别人写的代码蛮简单的,400ms的时限,100ms能过。

#include <stdio.h>
#include <string.h>
#define MAX_NUM 0x7fffffff
typedef struct Node{
char ID[10];
int score[4];
int best_rank;
int best_course;
}Stu;
Stu stu[2005];
int N,M;
char map[]={'C','M','E','A'};
int main(){
int i,j,k;
scanf("%d %d",&N,&M);
for(i=0;i<N;i++){
scanf("%s %d %d %d",&stu[i].ID,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].score[3]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
}
for(i=0;i<N;i++){
int rank[4]={1,1,1,1};
for(j=0;j<N;j++){
for(k=0;k<4;k++){
if(i!=j&&stu[j].score[k]>stu[i].score[k])
rank[k]++;
}
}
int best_rank=MAX_NUM;
int best_course=MAX_NUM;
for(j=0;j<4;j++){
if(rank[j]<best_rank){
best_rank=rank[j];
best_course=j;
}
else if(rank[j]==best_rank){
if(j==3||j<best_course){
best_course=j;
}
}
}
stu[i].best_rank=best_rank;
stu[i].best_course=best_course;
}
for(i=0;i<M;i++){
char search[10];
scanf("%s",&search);
for(j=0;j<N;j++){
if(strcmp(stu[j].ID,search)==0){
printf("%d %c\n",stu[j].best_rank,map[stu[j].best_course]);
break;
}
}
if(j==N)
printf("N/A\n");
}
return 0;
}

 

这篇关于浙大PAT 1012题 1012. The Best Rank的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/750331

相关文章

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

浙大数据结构——03-树1 树的同构

这道题我依然采用STL库的map,从而大幅减少了代码量 简单说一下思路,两棵树是否同构,只需比较俩树字母相同的结点是否同构,即是否左==左,右==右或者左==右,右==左。 1、条件准备 atree和btree是存两个数结点字母,第几个就存输入的第几个结点的字母。 map通过结点的字母作为键,从而找到两个子节点的信息 都要用char类型 #include <iostream>#inc

浙大数据结构:堆栈和队列的定义与操作

堆栈: 顺序存储: #include<stdio.h>#include<stdlib.h>typedef int ElementType ;typedef int position ;#define MAXSIZE 100#define ERROR -1struct SNode {ElementType * Data ;position top;int Maxsize;};

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

PAT (Advanced Level) Practice——1011,1012

1011:  链接: 1011 World Cup Betting - PAT (Advanced Level) Practice (pintia.cn) 题意及解题思路: 简单来说就是给你3行数字,每一行都是按照W,T,L的顺序给出相应的赔率。我们需要找到每一行的W,T,L当中最大的一个数,累乘的结果再乘以0.65,按照例子写出表达式即可。 同时还需要记录每一次选择的是W,T还是L

SQLSERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER

SQL SERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER 前言 本文意于用实例数据帮助理解SQL SERVER排名函数RANK,DENSE_RANK,NTILE,ROW_NUMBER。 准备工作 创建测试表:   ? 1 2 3 4 5 create table test( id int identity(1,1)

DDR的Controller、Channel、Chip、Rank、Bank、Row、Column、Sided、Dimm

目录 概览 1.概览             先从半导体生产开始,生产出来还没切割的叫晶圆(wafer)。切割出来还没封装的叫裸die(bare die)。封装好的叫颗粒(component)。做成内存条后叫模组(module)。下文我们也会按这样的称呼去区分。 2.Controller(内存控制器)         一开始内存控制器在主板上有独立的芯片;在英特尔微处理器

最佳优先搜索best-find search

目录 1. 问题 2. 算法 3.代码 1. 问题 考虑下面这个问题:  我们要找到从Arad到Bucharest的路,最好是最短的路: 2. 算法 这是一个无向有环图, 可以采用最佳优先搜索: 最佳优先搜索的算法可以参考维基百科: 伪代码如下: // Pseudocode for Best First SearchBest-First-Search(Gr