杭电oj1236 排名
Tips:此题比较简单,最好将每一个学生的信息构建一个结构体,另外需要注意的是,若分数相同,排序按姓名排序,我看网上很多都是使用<algorithm>中的sort算法,只需重写cmp函数即可。
该方法如下所示:
- #include<aigorithm>
- bool cmp(const node &a,const node &b)
- {
- if(a.sum == b.sum)
- return strcmp(a.name,b.name) < ? : ;
- else
- return a.sum > b.sum;
- }
但由于我自己是采用纯C语言代码提交的,所以排序时时是自己写的sort函数,采用冒泡排序,虽然较慢,不过也可以AC
- void sort(struct node stu[],int n)
- {
- int i = ;
- int j = ;
- for(i = ;i < n;i++)
- {
- for(j = i ; j < n ; j++)
- {
- if(stu[i].sum<stu[j].sum) //按分值由大到小排序
- {
- struct node temp = stu[i];
- stu[i] = stu[j];
- stu[j] = temp;
- }else if(stu[i].sum == stu[j].sum)
- {
- if(strcmp(stu[i].name,stu[j].name) > )
- {
- struct node temp = stu[i];
- stu[i] = stu[j];
- stu[j] = temp;
- }
- }
- }
- }
- }
最后附上完整源程序:
- #include <stdio.h>
- #include <stdlib.h>
- #define MAXSTU 1005
- struct node
- {
- char name[]; //姓名
- int num; //完成题目数量
- int sum; //得分
- }stu[MAXSTU];
- void sort(struct node stu[],int n)
- {
- int i = ;
- int j = ;
- for(i = ;i < n;i++)
- {
- for(j = i ; j < n ; j++)
- {
- if(stu[i].sum<stu[j].sum) //按分值由大到小排序
- {
- struct node temp = stu[i];
- stu[i] = stu[j];
- stu[j] = temp;
- }else if(stu[i].sum == stu[j].sum)
- {
- if(strcmp(stu[i].name,stu[j].name) > )
- {
- struct node temp = stu[i];
- stu[i] = stu[j];
- stu[j] = temp;
- }
- }
- }
- }
- }
- int main()
- {
- int N = ; //考生人数
- int M = ; //考题数量
- int G = ; //分数线
- int score[] = {};//每道题的分值
- int i=,j=;
- int cnt = ;
- while(scanf("%d",&N) && N != )
- {
- scanf("%d %d",&M,&G);
- for(i=;i<M;i++)//读入第二行分值数据
- {
- scanf("%d",&score[i]);
- }
- cnt = ;
- for(i=;i<N;i++)//循环读入每隔学生的信息数据
- {
- scanf("%s%d",stu[i].name,&stu[i].num);
- stu[i].sum = ;
- while(stu[i].num--)
- {
- scanf("%d",&j);
- stu[i].sum += score[j-];
- }
- if(stu[i].sum >= G)
- cnt++;
- }
- sort(stu,N);
- printf("%d\n",cnt);
- for(i=;i<N;i++)
- {
- if(stu[i].sum >= G)
- {
- printf("%s %d\n",stu[i].name,stu[i].sum);
- }
- }
- }
- return ;
- }
杭电oj1236 排名的更多相关文章
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- 高手看了,感觉惨不忍睹——关于“【ACM】杭电ACM题一直WA求高手看看代码”
按 被中科大软件学院二年级研究生 HCOONa 骂为“误人子弟”之后(见:<中科大的那位,敢更不要脸点么?> ),继续“误人子弟”. 问题: 题目:(感谢 王爱学志 网友对题目给出的翻译) ...
- 2017杭电ACM集训队单人排位赛 - 6
2017杭电ACM集训队单人排位赛 - 6 排名 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 59 1 X X 1 1 X X 0 1 ...
- acm入门 杭电1001题 有关溢出的考虑
最近在尝试做acm试题,刚刚是1001题就把我困住了,这是题目: Problem Description In this problem, your task is to calculate SUM( ...
- 杭电acm 1002 大数模板(一)
从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...
- 杭电OJ——1198 Farm Irrigation (并查集)
畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...
- C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...
- 杭电ACM2076--夹角有多大(题目已修改,注意读题)
杭电ACM2076--夹角有多大(题目已修改,注意读题) http://acm.hdu.edu.cn/showproblem.php?pid=2076 思路很简单.直接贴代码.过程分析有点耗时间. / ...
- 杭电ACM2092--整数解
杭电ACM2092--整数解 分析 http://acm.hdu.edu.cn/showproblem.php?pid=2092 一个YES,一个Yes.试了10几次..我也是无语了..哪里都不 ...
随机推荐
- Android的debug.keystore拒绝访问导致的生成异常及解决方案
构建Android应用程序的时候输出异常:[apkbuilder] keytool 错误: java.io.FileNotFoundException: C:\Users\my\.android\de ...
- 【转】如何定制android源码的编译选项 & 后期安装? ---- 不错
原文网址:http://blog.sina.com.cn/s/blog_3e3fcadd0100z3o9.html Android编译过程比较长,配置起来也很麻烦.现仅就工作遇到的问题做个总结.所用硬 ...
- cf478C Table Decorations
C. Table Decorations time limit per test 1 second memory limit per test 256 megabytes input standard ...
- C pointers
指向整型数组指针int (*p)[10] = matrix;增加这个指针的值使它指向下一个整型数组 指向整型指针int *pi = &matrix[0][0];int *pi = &m ...
- curl 浏览器模拟请求实战
1,curl 常用选项
- JDK5新特性之线程同步集合(五)
一. 传统集合: 传统方式下的Collection在迭代集合时, 不同意对集合进行改动: public class CollectionModifyExceptionTest { public sta ...
- RequireJs运行原理
在require中,根据AMD(Asynchronous Module Definition)的思想,即异步模块加载机制,其思想就是把代码分为一个一个的模块来分块加载,这样无疑可以提高代码的重用. 在 ...
- Linux三种关机/重启系统的命令
Linux提供了三种关机/重启系统的命令:shutdown.halt和reboot.这三个命令在一般情况下只有 系统的超级用户(一般是指root)才可以执行.输入没有参数的shutdown命令,两分钟 ...
- PHP学习笔记1.2——预定义变量参考
预定义变量和用户自定义变量在使用上没有区别,大多数预定义变量的执行结果都是服务器的相关信息(如:版本号.路径.错误参数等),所以我们很少将其用于网站前台开发,如果被别有用心得人知道了后,会严重威胁服务 ...
- jquery初学者易犯的错误
1 获取类或者对象的时候,忘记写“#”或者“.” 错误案例: $(document).ready(function(){ $("btn1").click(function(){ a ...