【题解】「THUPC 2017」体育成绩统计 / Score

本文详细介绍了体育成绩统计的方法,通过处理输入数据,利用结构体存储个人信息,并对阳光跑步信息进行分类处理。重点在于清晰的思路和对潜在问题的关注。
摘要由CSDN通过智能技术生成

题目

题目

题解

首先输入并处理,用一个结构体将每个人的信息存好,然后把阳光跑步的信息按人分类,每个人单独处理,具体细节见注释。

#include <bits/stdc++.h>
//#define int long long
using namespace std;
const int M = 5e3 + 5, N = 1e4 + 5;
int n, m;
int tianshu[100] = {
    0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
map<string, int> mp;
struct _node {
   //阳光长跑
    int year, mon, day;
    int khh, kmm, kss;
    int jhh, jmm, jss;  //开始结束时间
    double L;           //距离
    int zfen, zmiao;    //暂停时间
    int bs;             //步数
};
struct node {
   
    string s;
    int k;           //编号
    char xing[100];  //性别
    int zx;          //体育课专项成绩
    int fen, miao;   //期末长跑测试成绩
    char flag[100];  //体质测试结果
    int dyc;         //大一专项期末
    int cs;          //班级训练营次数
    vector<_node> b;
    int tot;  //条数
    int pp;   //合法次数
};
node a[M];
bool cmp(_node l, _node r) {
   
    if (l.year == r.year) {
   
        if (l.mon == r.mon) {
   
            if (l.day == r.day) {
   
                if (l.khh == r.khh) {
   
                    if (l.kmm == r.kmm) {
   
                        return l.kss < r.kss;
                    } else {
   
                        return l.kmm < r.kmm;
                    }
                } else {
   
                    return l.khh < r.khh;
                }
            } else {
   
                return l.day < r.day;
            }
        } else {
   
            return l.mon < r.mon;
        }
    } else {
   
        return l.year < r.year;
    }
}
int p1(int x) {
     //体育课专项成绩
    return a[x].zx;
}
int p2(int x) {
     //长跑测试成绩
    if (a[x].xing[0] == 'M') {
   
        int ff = a[x].fen, mm = a[x].miao;
        if (ff < 12 || (ff == 12 && mm <= 30)) {
   
            return 20;
        }
        if (ff < 13 || (ff == 13 && mm <= 0)) {
   
            return 18;
        }
        if (ff < 13 || (ff == 13 && mm <= 30)) {
   
            return 16;
        }
        if (ff < 14 || (ff == 14 && mm <= 0)) {
   
            return 14;
        }
        if (ff < 14 || (ff == 14 && mm <= 30)) {
   
            return 12;
        }
        if (ff < 15 || (ff == 15 && mm <= 10)) {
   
            return 10;
        }
        if (ff < 15 || (ff == 15 && mm <= 50)) {
   
            return 8;
        }
        if (ff < 16 || (ff == 16 && mm <= 30)) {
   
            return 6;
        }
        if (ff <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值