UVaOJ 10194 - Football(aka Soccer)

本文介绍了一个模拟足球小组赛的算法题目解决方案,通过比赛记录计算各队得分、排名等详细数据,并使用自定义排序规则对球队进行排序。

AOAPC I: Beginning Algorithm Contests (Rujia Liu) :: Volume 1. Elementary Problem Solving ::Sorting/Searching


Description

模拟足球小组赛的规则, 通过比赛记录, 计算出最后的 rank 及队伍的各项数据。

rank 规则(优先级从高到低):

  1. 分数最多者。
  2. 胜场最多者。
  3. 进丢球差最大者。
  4. 进球数最多者。
  5. 比赛场次少者。
  6. 队名字典序小者。
而一场比赛, 胜者得 3 分, 输者得 2 分。

Type

Sorting/Searching


Analysis

入门级的恶心模拟题。

注意队名是含有大小写字母的, 而字典序中大小写没有区别。

这就造成了字典序, 和 STL string 默认的小于号, 有细微的差别。

这细微的差别可能就是你无限 WA 的根源。


Solution

// UVaOJ 10194
// Football(aka Soccer)
// by A Code Rabbit

#include <algorithm>
#include <cctype>
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

string ToLower(string);

struct Team {
    string name;
    int point;
    int game;
    int win, tie, loss;
    int scored, against, difference;
    void Init() {
        point = game = win = tie = loss = scored = against = difference = 0;
    }
    bool operator<(Team another) const {
        if (this->point != another.point)
            return this->point > another.point;
        else if (this->win != another.win)
            return this->win > another.win;
        else if (this->difference != another.difference)
            return this->difference > another.difference;
        else if (this->scored != another.scored)
            return this->scored > another.scored;
        else if (this->game != another.game)
            return this->game < another.game;
        else
            return ToLower(this->name) < ToLower(another.name);
    }
};

string tournament;
int t;
Team team[32];
int g;
string team_name_1, team_name_2;
int goals1, goals2;

void Analyze(string team1, string team2, int goal1, int goal2);

int main() {
    int tot_case;
    cin >> tot_case;
    cin.get();
    while (tot_case--) {
        // Input.
        getline(cin, tournament);
        cin >> t;
        cin.get();
        for (int i = 0; i < t; i++) {
            team[i].Init();
            getline(cin, team[i].name);
        }
        cin >> g;
        cin.get();
        // Input data and analyze data.
        for (int i = 0; i < g; i++) {
            getline(cin, team_name_1, '#');
            cin >> goals1;
            cin.get();
            cin >> goals2;
            cin.get();
            getline(cin, team_name_2);
            team_name_1 = str1;
            team_name_2 = str2;
            Analyze(team_name_1, team_name_2, goals1, goals2);
        }
        // Rank.
        sort(team, team + t);
        // Output.
        printf("%s\n", tournament.c_str());
        for (int i = 0; i < t; i++) {
            printf("%d) %s %dp, %dg (%d-%d-%d), %dgd (%d-%d)\n",
                i + 1, team[i].name.c_str(), team[i].point, team[i].game,
                team[i].win, team[i].tie, team[i].loss, team[i].difference,
                team[i].scored, team[i].against);
        }
        printf("%s", tot_case ? "\n" : "");
    }

    return 0;
}

string ToLower(string str) {
    for (int i = 0; i < str.length(); i++)
        str[i] = tolower(str[i]);
    return str;
}

void Analyze(string team_name_1, string team_name_2, int goal1, int goal2) {
    Team* team1;
    Team* team2;
    for (int i = 0; i < t; i++) {
        if (team[i].name == team_name_1)
            team1 = &team[i];
        if (team[i].name == team_name_2)
            team2 = &team[i];
    }
    
    if (goal1 > goal2) {
        team1->point += 3; 
        team1->win++;
        team2->loss++;
    } else
    if (goal1 < goal2) {
        team1->loss++;
        team2->win++;
        team2->point += 3;
    } else
    if (goal1 == goal2) {
        team1->point++;
        team1->tie++;
        team2->point++;
        team2->tie++;
    }
    /* team1 */
    team1->game++;
    team1->scored += goal1;
    team1->against += goal2;
    team1->difference = team1->scored - team1->against;
    /* team2 */
    team2->game++;
    team2->scored += goal2;
    team2->against += goal1;
    team2->difference = team2->scored - team2->against;
}

需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕“需求响应动态冰蓄冷系统与需求响应策略的优化研究”展开,基于Matlab代码实现,重点探讨了冰蓄冷系统在电力需求响应背景下的动态建模与优化调度策略。研究结合实际电力负荷与电价信号,构建系统能耗模型,利用优化算法对冰蓄冷系统的运行策略进行求解,旨在降低用电成本、平衡电网负荷,并提升能源利用效率。文中还提及该研究为博士论文复现,涉及系统建模、优化算法应用与仿真验证等关键技术环节,配套提供了完整的Matlab代码资源。; 适合人群:具备一定电力系统、能源管理或优化算法基础,从事科研或工程应用的研究生、高校教师及企业研发人员,尤其适合开展需求响应、综合能源系统优化等相关课题研究的人员。; 使用场景及目标:①复现博士论文中的冰蓄冷系统需求响应优化模型;②学习Matlab在能源系统建模与优化中的具体实现方法;③掌握需求响应策略的设计思路与仿真验证流程,服务于科研项目、论文写作或实际工程方案设计。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注系统建模逻辑与优化算法的实现细节,按文档目录顺序系统学习,并尝试调整参数进行仿真对比,以深入理解不同需求响应策略的效果差异。
综合能源系统零碳优化调度研究(Matlab代码实现)内容概要:本文围绕“综合能源系统零碳优化调度研究”,提供了基于Matlab代码实现的完整解决方案,重点探讨了在高比例可再生能源接入背景下,如何通过优化调度实现零碳排放目标。文中涉及多种先进优化算法(如改进遗传算法、粒子群优化、ADMM等)在综合能源系统中的应用,涵盖风光场景生成、储能配置、需求响应、微电网协同调度等多个关键技术环节,并结合具体案例(如压缩空气储能、光热电站、P2G技术等)进行建模与仿真分析,展示了从问题建模、算法设计到结果验证的全流程实现过程。; 适合人群:具备一定电力系统、能源系统或优化理论基础,熟悉Matlab/Simulink编程,从事新能源、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展综合能源系统低碳/零碳调度的科研建模与算法开发;②复现高水平期刊(如SCI/EI)论文中的优化模型与仿真结果;③学习如何将智能优化算法(如遗传算法、灰狼优化、ADMM等)应用于实际能源系统调度问题;④掌握Matlab在能源系统仿真与优化中的典型应用方法。; 阅读建议:建议结合文中提供的Matlab代码与网盘资源,边学习理论模型边动手调试程序,重点关注不同优化算法在调度模型中的实现细节与参数设置,同时可扩展应用于自身研究课题中,提升科研效率与模型精度。
本系统采用Java作为核心编程语言,基于Spring Boot框架构建,运行环境配置为JDK 1.8与Tomcat 7应用服务器。数据存储选用MySQL 5.7数据库,并借助Navicat 11进行数据库管理操作。开发工具可在Eclipse、MyEclipse或IntelliJ IDEA中任选,项目依赖管理通过Maven 3.3.9完成。 该简历管理平台在架构设计阶段,着重强化了代码结构的清晰度与可维护性,同时兼顾系统的实用价值与扩展灵活性。整体设计遵循通用化原则,确保后期维护简便,用户界面力求直观简洁。 系统通过标签分类机制实现功能模块化管理,主要包含以下三个角色维度: 管理员端涵盖综合管理功能:包括控制面板、用户账户管理、简历模板维护、模板分类设置、招聘会组织、报名信息处理、上传简历审核、求职社区管理、收藏夹维护及系统参数配置。 普通用户端提供个性化功能:涉及个人中心、招聘活动报名、简历文件上传及个人收藏记录管理。 公共访问端集成信息展示与交互模块:主要展示首页内容、简历模板库、招聘会资讯、简历上传入口、求职讨论区、系统公告栏,并提供个人中心入口、后台管理通道与在线客户服务。 该系统旨在通过结构化功能设计,提升简历相关数据的管理效率与组织化程度。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值