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):一种不错的扩展方式
在过去,我们完成一套应用程序后,如果后面对其功能进行了扩展或修整,往往需要重新编译代码生成新的应用程序,然后再覆盖原来的程序.这样的扩展方式对于较小的或者不经常扩展和更新的应用程序来说是可以接受的,而 ...
随机推荐
- Objective-C(十八、谓语使用及实例说明)——iOS开发基础
结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,仅仅是作为參考,以苹果官方文档为准~ 十八.谓语的使用及 ...
- Rss 的作用 及使用方法
也可以参考http://jingyan.baidu.com/article/e73e26c0c73e1f24adb6a70f.html 什么是RSS RSS是站点用来和其他站点之间共享内容的一种简易方 ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- css解决文字垂直居中
参考链接: http://www.cnblogs.com/lufy/archive/2012/09/12/2681972.html http://zhidao.baidu.com/question ...
- CSS选择符 新的认识
以前写选择符,很少使用">"符号,一般都是使用" "空格来代替.我觉得他们都是一样的功能,另一方面是为了方便.毕竟不用按住shift. 例如: .demo ...
- jsp生成html
这几天公司需要生成静态的HTML页面以减小数据库与服务器的压力和负担,于是在网络上一阵狂搜,找到几篇相当不错的文章和一些相当有用的资料.为了方便,我整理在自己的BLOG,以供参考! 在接下来的应用中, ...
- (原+转)使用opencv的DFT计算卷积
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462665.html 参考网址: http://blog.csdn.net/lichengyu/art ...
- 一台nginx服务器多域名配置 (转)
Nginx强大的正则表达式支持,可以使server_name的配置变得很灵活,如果你要做多用户博客,那么每个用户拥有自己的二级域名也就很容易实现了. 下面我就来说说server_name的使用吧: s ...
- TextView之一:子类的常用属性
TextView常见的子类包括EditText,Button,CheckBox, RadioButton等. 1.EditText EditText继承自TextView,因此TextView所有属性 ...
- __m128i的理解[转]
__m128i被称为128bits的整数,当我们对其赋值时,调用 __m128i _mm_set1_epi32(int i) Sets the four signed 32-bit integer v ...