测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A22003. 给定有 n个任务,每个任务有截⽌时间和利润,每个任务耗时 1 个时间单位、必须在截⽌时间前完成,且每个时间槽最多做 1 个任务。为了在规定时间内获得最⼤利润,可以采⽤贪⼼策略,即按利润从⾼到低排序,尽量安排,则横线处应填写( )。struct Task { int deadline; // 截止时间 int profit; // 利润 }; void sortByProfit(vector<Ta…

单选题 困难

题目描述

给定有 n个任务,每个任务有截⽌时间和利润,每个任务耗时 1 个时间单位、必须在截⽌时间前完成,且每个时间槽最多做 1 个任务。为了在规定时间内获得最⼤利润,可以采⽤贪⼼策略,即按利润从⾼到低排序,尽量安排,则横线处应填写(    )。

struct Task {
    int deadline;  // 截止时间
    int profit;    // 利润
};

void sortByProfit(vector<Task>& tasks) {
    sort(tasks.begin(), tasks.end(),
         [](const Task& a, const Task& b) {
             return a.profit > b.profit;
         });
}

int maxProfit(vector<Task>& tasks) {
    sortByProfit(tasks);
    
    int maxTime = 0;
    for (auto& t : tasks) {
        maxTime = max(maxTime, t.deadline);
    }
   
    vector<bool> slot(maxTime + 1, false);
    int totalProfit = 0;
    
    for (auto& task : tasks) {
        for (int t = task.deadline; t >= 1; t--) {
            if (!slot[t]) {
                _________________  // 在此处填入代码
                break;
            }
        }
    }
    return totalProfit;
}

选项(单选)

上一题 下一题