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>
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):一种不错的扩展方式
在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序.这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而 ...
随机推荐
- oracle查询优化
1. 排序合理查询条件 Oracle自下而上分析顺序WHERE收条,从优化性能的角度.它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束, 之间的连接条件置于其它WHERE子句之前,即对易排 ...
- TabBarItem图片大小改变
在TabBarItem设计的时候不需要title只要image的时候,如何将image居中显示. tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, ...
- Git 笔记三 Git的初步使用
Git 笔记三 Git的初步使用 在上一篇中,学习了如何配置Git环境,这一篇,开始学习Git的初步使用.Git的初步使用还是很简单的.总体上知道git init, git clone, git ad ...
- FlashbackQuery:SCN与timestamp示例
Flashback QueryFlashback 是ORACLE 自9i 就开始提供的一项特性,在9i 中利用oracle 查询多版本一致的特点,实现从回滚段中读取表一定时间内操作过的数据,可用来进行 ...
- 带CheckBox的TreeView网上出错问题解决办法
问题描述:TreeView上传到服务器,预览效果发现节点图片不显示.展开合并功能缺失.解决办法: 以下是我个人的解决办法,最终的效果实现了,但是还有一点点小遗憾,就是页面上有基于微软的调用js的报错信 ...
- [Python][MachineLeaning]Python Scikit-learn学习笔记1-Datasets&Estimators
Scikit-learn官网:http://scikit-learn.org/stable/index.html Datasets 标准的数据集格式为一组多维特征向量组成的集合.数据集的标准形状(sh ...
- hadoop下载
1.输入网址: http://mirrors.cnnic.cn/apache/hadoop/common/ 2.选择需要的版本进行点击下载
- Delphi Length函数
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- CSS3动画之百度钱包
百度钱包的步骤:1.建一个盒子,里面放两个盒子,代表正反面,两个盒子叠一起,正面层次高2.当鼠标Hover时,正面盒子从0deg->-180deg,反面盒子从-180deg->0deg3. ...
- python笔记之subprocess模块
python笔记之subprocess模块 [TOC] 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spaw ...