美文网首页
HDU2093,康复之旅第一篇

HDU2093,康复之旅第一篇

作者: Amosasas | 来源:发表于2017-09-19 00:05 被阅读0次

题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=2093
大意就是让我们对一场考试进行名次排序,怎么排呢?AC多的人在前,AC数目相同的情况下呢,我们看花费的时间,时间少的在前,若题目做对的数目和花费的时间都相同,那么就用字典序,小的在前。表示方法就是一下几种

0 表示未开始做此题
-2 表示做了题目但没有做对,还做错了2次,但是不罚时
2(2) 也就是花了2个单位的时间,但是错了2次,这个要罚时
2 就是花了2个单位的时间做对了

大体思路:处理结构体排序,以及输入(各种EOF scanf)输出处理(左右对齐)。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
struct STUDENT{
  char name[200];
  int correct;
  int cost;
};
bool cmp(STUDENT x,STUDENT y)
{
    if(x.correct!=y.correct) return x.correct>y.correct;
    else if(x.cost!=y.cost) return x.cost<y.cost;
    else return strcmp(x.name,y.name)<0;
}
int main()
{
 //   freopen("sample.txt","r",stdin);
    STUDENT student[200];
    char s[200],wrongAns[200],costTime[200];
    char *ptrBegin;
    int n,m;
        
        scanf("%d %d",&n,&m);   
        int i=0;                                     //i 学生人数
        while(scanf("%s",&student[i].name)!=EOF)     //处理第i个学生
        {
            student[i].correct=0;
            student[i].cost=0;
            for(int j=0;j<n;j++)                    //j个题 
            {
                scanf("%s",&s);
                if(s[0]=='0') continue;                                //0
                else if(s[0]=='-') continue;                           //-
                else                                                   //m(n)
                {
                    ptrBegin=strchr(s,'(');
                    if(ptrBegin)                                       //有n
                    {
                        memset(wrongAns,0,sizeof(char));
                        memset(costTime,0,sizeof(char));
                        int t=0;
                        for(int k=0;k<strlen(s)-strlen(ptrBegin);k++)
                        {
                            costTime[t]=s[k];
                            t++;
                        }
                        costTime[t]='\0';
                        t=0; 
                        for(int k=strlen(s)-strlen(ptrBegin)+1;k<strlen(s)-1;k++)
                        {
                            wrongAns[t]=s[k];
                            t++;
                        }
                        wrongAns[t]='\0';
                        student[i].cost+=atoi(costTime);
                        student[i].cost+=m*atoi(wrongAns);
                    }
                    else                                                //无n
                    {
                        student[i].cost+=atoi(s);  
                    }
                    student[i].correct++;
                }
            }
            i++;
        }
        sort(student,student+i,cmp);
        for(int k=0;k<i;k++){
            printf("%-10s%3d%5d\n",student[k].name,student[k].correct,student[k].cost);
        }
             
//  fclose(stdin);
    return 0;
}

由于实在是太久没有接触这个语言了,对语法和细节基本都是边百度边做的,很痛苦,我在进行杭电的100题训练提升自己。

相关文章

  • HDU2093,康复之旅第一篇

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2093大意就是让我们...

  • 康复之旅

    几年前骑车从三附院的小儿康复楼前路过,遇见许多值得同情的家庭,但是从没想过自己也会成为其中的一员! 今年年初...

  • 康复之旅

    2016.12.28号一个小天使降临到我身边,他太着急见到爸爸妈妈了,竟然把他的小耳朵遗忘在上帝那里,他也没有伤心...

  • 脊柱康复之旅

    刚开始都没有啥概念,也就知道个腰椎间盘突出。压迫了什么坐骨神经、如何形成,如何治疗.........也不知道个所以...

  • 《走向康复之旅》

    大家好我是阳光森林的健康管理师——红彦。很高兴,今天邀请到——缪晓菊,来自浙江嘉善。 首先,感谢老师给我这样一难得...

  • 只想和自己相处的时光

    1月21号的旅程分为三个篇章 第一篇--银滩之旅 第二篇--北邮16号 第三篇--涠洲岛 第一篇--银滩之旅 我在...

  • 和尧尧的日常(1)

    又名:第一篇熬夜作业T^T 海洋馆之旅~ 尧宝宝因为海洋馆之旅感冒了,今天不停的包饺子…产量惊人(*¯︶¯*) 昨...

  • 记忆受损的养生康复之旅💪

  • 康复科

    针刺,电针,艾灸,拔罐,推拿,牵引,穴位注射,埋线,热熨……加上小葵花妈妈课堂,构成了为期两周的康复科之旅。

  • 骑行川藏线318-翻山越岭,和温柔相遇

    第一篇周记,谨此献给我的骑行川藏线318之旅。 18天的川藏之旅终于要结束了,回来好像做了一场梦 ,却又很真实的梦...

网友评论

      本文标题:HDU2093,康复之旅第一篇

      本文链接:https://www.haomeiwen.com/subject/vfmisxtx.html