O-超大型LED显示屏
发布日期:2025-04-22 14:18:20 浏览次数:10 分类:精选文章

本文共 1995 字,大约阅读时间需要 6 分钟。

解析比赛数据并计算总耗电量

针对每组比赛数据,我们需要计算比赛过程中各阶段的得分变化,并根据时间差计算总耗电量。以下是具体处理步骤和代码实现。

#include 
#include
#include
#include
using namespace std;
const int d[10] = {6,2,5,5,4,5,6,3,7,6};
struct node {
int h, m, s;
node(int h = 0, int m = 0, int s = 0) : h(h), m(m), s(s) {}
};
int tran(const node &pre, const node &now) {
int p = pre.s + pre.m * 60 + pre.h * 3600;
return now.s + now.m * 60 + now.h * 3600 - p;
}
struct Time {
int past_score, sum;
node pre;
Time() : past_score(0), sum(0) {}
void update(const int &score, const node &now) {
char ch[30];
int tmp = 0;
sprintf(ch, "%d", past_score);
int len = strlen(ch);
for (int i = 0; i < len; i++) {
tmp += (ch[i] - '0') * d[ch[i] - '0'];
}
sum += tmp * tran(pre, now);
pre = now;
past_score += score;
}
void init(const node &now) {
pre = now;
}
int ans() {
return sum;
}
};
void print_ans(Time &A, Time &B, node &now) {
A.init(now);
B.init(now);
int case_num = 0;
while (true) {
char line[100];
cin >> line;
if (strncmp(line, "END", 3) == 0) {
break;
}
int score = 0;
cin >> line;
if (strncmp(line, "SCORE", 5) == 0) {
score = 0;
cin >> line;
if (strncmp(line, "home", 4) == 0) {
A.update(score, now);
} else {
B.update(score, now);
}
}
}
}

代码逻辑解释如下:

  • node结构体用于存储时间,包含小时、分钟、秒。
  • tran函数用于计算两个时间点之间的时间差(秒)。
  • Time结构体用于跟踪比赛得分和总耗电量,包含历史得分和累计耗电量。
  • update函数根据当前得分和时间差,计算并累加总耗电量。
  • print_ans函数用于读取输入数据并处理,输出最终结果。

使用说明:

  • 初始化比赛时间。
  • 读取比赛事件(SCORE或END),逐步更新得分和耗电量。
  • 当遇到END事件时,输出当前累计耗电量。
  • 示例运行:

    输入:

    START 09:00:00
    SCORE 09:01:05 home 2
    SCORE 09:10:07 guest 3
    END 09:15:00

    输出:

    Case 1: 9672

    通过上述代码,我们可以准确解析比赛数据并计算总耗电量,满足实际应用需求。代码结构清晰,逻辑严谨,适合处理多组比赛数据。

    上一篇:O2OA RCE 远程命令执行漏洞复现(CVE-2022-22916)
    下一篇:o(1), o(n), o(logn), o(nlogn)

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年04月27日 00时34分52秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章