HDU2093 字符串2种不错的读入思路
- <span style="font-family: 'Times New Roman'; font-size: 12px; background-color: rgb(255, 255, 255);">
- </span>
- <span style="font-family: 'Times New Roman'; font-size: 12px; background-color: rgb(255, 255, 255);">考试排名</span>
- <span style="font-family: 'Times New Roman'; font-size: 12px; background-color: rgb(255, 255, 255);">
- </span>
- <span style="font-family: 'Times New Roman'; font-size: 12px; background-color: rgb(255, 255, 255);">考试排名</span>
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 9160 Accepted Submission(s): 3201
我们做好了题目的解答,提交之后,要么“AC”,要么错误,不管怎样错法,总是给你记上一笔,表明你曾经有过一次错误提交,因而当你一旦提交该题“AC”后,就要与你算一算帐了,总共该题错误提交了几回。虽然你在题数上,大步地跃上了一个台阶,但是在耗时上要摊上你共花去的时间。特别是,曾经有过的错误提交,每次都要摊上一定的单位时间分。这样一来,你在做出的题数上,可能领先别人很多,但是,在做出同样题数的人群中,你可能会在耗时上处于排名的劣势。
例如:某次考试一共8题(A,B,C,D,E,F,G,H),每个人做的题都在对应的题号下有个数量标记,负数表示该学生在该题上有过的错误提交次数,但到现在还没有AC,正数表示AC所耗的时间,如果正数a跟上一对括号,里面有个整数b,那就表示该学生提交该题AC了,耗去了时间a,同时,曾经错误提交了b次,因此对于下述输入数据:

若每次错误提交的罚分为20分,则其排名从高到低应该是这样的:
Josephus 5 376
John 4 284
Alice 4 352
Smith 3 167
Bob 2 325
Bush 0 0
8 20 Smith -1 -16 8 0 0 120 39 0 John 116 -2 11 0 0 82 55(1) 0 Josephus 72(3) 126 10 -3 0 47 21(2) -2 Bush 0 -1 -8 0 0 0 0 0 Alice -2 67(2) 13 -1 0 133 79(1) -1 Bob 0 0 57(5) 0 0 168 -7 0
Josephus 5 376 John 4 284 Alice 4 352 Smith 3 167 Bob 2 325 Bush 0 0
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct node
- {
- char name[20];
- int num, time;
- }node;
- node stu[10001];
- int cmp(const void *a,const void *b)
- {
- node *aa=(node *)a; node *bb=(node *)b;
- if(bb->num!=aa->num) return bb->num-aa->num;
- else if(aa->time!=bb->time) return aa->time-bb->time;
- else return strcmp(aa->name,bb->name);
- }
- int main()
- {
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- int n,m,xia=0,i,tempi;
- char tempc;
- scanf("%d%d",&n,&m);
- while(scanf("%s",stu[xia].name)!=EOF)
- {
- for(i=1;i<=n;i++)
- {
- scanf("%d%c",&tempi,&tempc);
- if(tempi>0)
- {
- stu[xia].num++;
- stu[xia].time+=tempi;
- if(tempc=='(')
- {
- scanf("%d%c",&tempi,&tempc);
- stu[xia].time+=tempi*m;
- }
- }
- }
- xia++;
- }
- qsort(stu,xia,sizeof(stu[0]),cmp);
- for(i=0;i<xia;i++)
- printf("%-10s %2d %4d\n",stu[i].name,stu[i].num,stu[i].time);
- return 0;
- }
第二种 读入判断末尾区别
- #include <iostream>
- #include <algorithm>
- #include <math.h>
- #include <cstdlib>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- struct Stu
- {
- char Name[20];
- int AC;
- int Time;
- };
- Stu a[100001];
- int cmp(Stu a, Stu b)
- {
- if (a.AC != b.AC)
- return a.AC > b.AC;
- else
- return a.Time < b.Time;
- }
- int main()
- {
- int problem, punish;
- cin >> problem >> punish;
- char tmp[20];
- int cnt = 0;
- while (cin >> a[cnt].Name)
- {
- a[cnt].AC = 0;
- a[cnt].Time = 0;
- for (int j = 0; j < problem; j ++)
- {
- cin >> tmp;
- int l = strlen(tmp);
- if (tmp[0] == '-')
- {
- ;
- }
- else if (tmp[l-1] != ')')
- {
- if(atoi(tmp))
- {
- a[cnt].AC ++;
- a[cnt].Time += atoi(tmp);
- }
- }
- else
- {
- int s = 0;
- a[cnt].AC ++;
- for (int m = 0; m < l; m ++)
- {
- if (tmp[m] != '(' && tmp[m] != ')')
- {
- s = s * 10 + tmp[m] - '0';
- }
- else if (tmp[m] == '(')
- {
- a[cnt].Time += s;
- s = 0;
- }
- else if(tmp[m] == ')')
- {
- a[cnt].Time += s * punish;
- }
- }
- }
- }
- cnt ++;
- }
- sort(a, a + cnt, cmp);
- for (int j = 0; j < cnt; j ++)
- {
- printf("%-10s %2d %4d\n", a[j].Name, a[j].AC, a[j].Time);
- }
- return 0;
- }
HDU2093 字符串2种不错的读入思路的更多相关文章
- 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...
- [小专题]另一种字符串匹配的思路——Shift-And算法
吐槽:前两天打组队赛遇到一个字符串的题考了这个(见:http://acm.hdu.edu.cn/showproblem.php?pid=5972 ) 当时写了个KMP瞎搞然后TLE了(害),赛后去查了 ...
- C#表驱动法+一点反射实现“得到指定位数随机不重复字符串”三种方式的封装
1.结构 第一个类 public class GetMethods{...} 类中的变量: ...
- PHP字符串三种定义方式
PHP的字符串有三种定义方式:单引号 .双引号 .定界符 1.单引号:指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来. 在被单引号括起来的字符串中,要再表示一个单引号,需要用反斜线(\ ...
- Longest Palindromic Substring (最长回文字符串)——两种方法还没看,仍需认真看看
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- javascript参数化拼接字符串两种方法
javascript如果直接使用字符串+的话,会被大量单引号搞晕,可以有两种比较简单的方法使用参数化拼接. 方式一,传统js //示例:StringFormat("abc{0}def&quo ...
- Vue组件template模板字符串几种写法
在定义Vue组件时,组件的模板template选项需要的是一个字符串,当其内容较复杂需要换行时,需要简单处理一下,具体有五种方式: 方式一:使用 \ 转义换行符 <!DOCTYPE html&g ...
- 一种不错的 BFF Microservice GraphQL/REST API 层的开发方式
云原生(Cloud Native)Node JS Express Reactive 微服务模板 (REST/GraphQL) 这个项目提供了完整的基于 Node JS / Typescript 的微服 ...
- 实战MEF(1):一种不错的扩展方式
在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序.这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而 ...
随机推荐
- VS2012 拆分视图按钮不见,代码,设计
工具--选项--HTML设计器 然后重启就有了.
- hdu1175连连看
Problem Description “连连看”相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以通过一条线连起来(这条线不能经 ...
- C++ 语言特性的性能分析
转载:http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487244.html 大多数开发人员通常都有这个观点,即汇编语言和 C 语 ...
- 图片ppm编码格式
ppm图片有2种格式, ASCII格式和binary格式. (1)ppm头部分 由三部分组成,这三部分由回车或换行分割,但PPM的标准中是要求空格. 第一行通常是P3或P6,说明是PPM格式: 第二行 ...
- img元素高度多出来的几像素
HTML: <div class="test"><img src="body2.jpg" alt=""></d ...
- js序列化json对象
SerializeJsonToStr : function( oJson ) { if( oJson == null ) return "null"; if( typeof(oJs ...
- 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
python IO操作的时候出现这种错误,检查一些url的目录 这个时候需要注意一下一般的dir举例是:“F:\DOCUMENT\4.7” 需要修改成为:F:/DOCUMENT/4.7
- TF卡座(外焊、内焊、掀盖式、全塑、简易)
TF卡座(外焊.内焊.掀盖 式.全塑.简易
- DOSUSB 2.0 免费版的限制原理
两年前,我在写USB的文章时,多次提到了DOSUSB这个东东,这两年也没有关注这方面的变化,最近,有机会重新进入DOSUSB的官方网站(www.dosusb.net),欣喜地发现,这个网站不仅依然存在 ...
- windows 7 系统进程服务详解
windows 7已经发布有段时间了,相信很多网友都已经换上了传说中非常完美的win7系统.win7不仅继承而且还超越了vista的美观界面,性能优化方面也下足了功力.还拥有强大的win xp兼容性, ...