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):一种不错的扩展方式
在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序.这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而 ...
随机推荐
- boost库在工作(39)网络UDP异步服务端之九
前面创建的UDP服务器和客户端,都是同步的方式,也就是说当接收数据时,不能参与别的事情执行的.如果在一个只有界面线程的程序里,又不想创建多线程,导致复杂程度的增加,在这种情况之下,我们还有一个方案可以 ...
- EffectiveC#12,13,14--成员初始化
1.在一个类里声明变量的同时,直接创建实例值.包括静态的和实例的变量 例:object m_o = new object(); 如下情况时不建议这么做:第一种 值类型. int i=new int() ...
- gdal_merge.py
1 gdal_merge.py: 合并(Merge)/镶嵌(Mosaic)工具.要求图像必须是相同坐标系统.具有相同的波段数:可以不同分辨率,可以有重叠区域(后加入图像覆盖先加入的图像). 注意:只能 ...
- String类中几个简单的常用方法
这里我们就把 info 这个字符串 通过 “ ” 这个分隔符 分割成几部分 并吧没部分添加到 s 数组里面 注意:只有字符串才能分割 分隔符必须是 char 类型 而且是 字符串 里面存在的, 例如我 ...
- LANMP 一键下载
下载安装 wget http://dl.wdlinux.cn:5180/lanmp_v2.5.tar.gz tar zxvf lanmp_v2.5.tar.gz sh install.sh 4个可选安 ...
- Asp.net数据库缓存依赖
Asp.net数据库缓存依赖 更多的时候,我们的服务器性能损耗还是在查询数据库的时候,所以对数据库的缓存还是显得特别重要,上面几种方式都可以实现部分数据缓存功能.但问题是我们的数据有时候是在变化的,这 ...
- UIImageView 一些属性设置
1.contentMode属性 这个属性是用来设置图片的显示方式,如居中.居右,是否缩放等,有以下几个常量可供设定: UIViewContentModeScaleToFill UIViewConten ...
- OD调试1--第一个win32程序
OD调试一:第一个Win32程序的修改 在软件开发的过程中,程序员会使用一些调试工具,以便高效地找出软件中存在的错误.而在逆向分析领域,分析者也会利用相关的调试工具来分析软件的行为并验证分析结果.由于 ...
- HTML5简单入门系列(二)
前言 上篇中写到HTML5中的画布(canvas)元素,查看了canvas其他的资料,发现这个元素相关内容太多,鉴于本系列只是基础(主要是LZ也是初学),不再做太多介绍,有机会的话再单独写相关内容.说 ...
- TD数量不确定时如何让其宽度平均分布
D数量不确定时如何让其宽度平均分布?答案很简单,我们只要在table里面加上一下代码就可以实现. table { width: 100%; table-layout: fixed; }