题解:#6639.「GESP23.09五级」巧夺大奖 审核通过

shaobai 老师 2024-08-20 9:35:35 2024-08-20 9:37:27 5

题目描述

小明参加了一个巧夺大奖的游戏节目。主持人宣布了游戏规则:

1、游戏分为 n 个时间段,参加者每个时间段可以选择一个小游戏。

2、游戏中共有 n 个小游戏可供选择。

3、每个小游戏有规定的时限和奖励。对于第 i 个小游戏,参加者必须在第 个时间段结束前完成才能得到奖励

小明发现,这些小游戏都很简单,不管选择哪个小游戏,他都能在一个时间段内完成。

关键问题在于,如何安排每个时间段分别选择哪个小游戏,才能使得总奖励最高?


解法分析

很明显的贪心思路,把价值从大到小枚举,再枚举可以玩的最晚的时间段

时间复杂度


核心代码

sort(games, games + n, cmp);
    int sum = 0;
    for (int i = 0; i < n; i++) {
        for (int t = games[i].T; t >= 1; t--)
            if (!st[t]) {
                st[t] = true;
                sum += games[i].R;
                break;
            }
    }
{{ vote && vote.total.up }}