我正在尝试解决间隔调度问题的一个变体:给定一组n个作业,每个作业需要1个处理单元才能完成,并且每个作业都有一个可用的间隔(可以执行的开始时间和结束时间),找出可以调度的最大作业数。
我尝试的解决方案是对作业进行排序,并始终选择可用性结束时间最早的作业,同时在每次迭代后删除不可用的作业。
while jobs are not empty:
remove jobs that are not available
find the job with earliest end_availability_time
execute the job
我使用优先级队列,在该队列中,我在开
谦卑,第14课,任务TieRopes ()。简单地说,问题是将正整数的列表A划分为(连续的)子列表的最大数目,该子列表至少有和K。
我只是想出了一个贪婪的解决方案,因为这就是教训的名称。它通过了所有的测试,但我不知道为什么它是一个最优的解决方案(如果它是最优的)。
int solution(int K, vector<int> &A) {
int sum = 0, count = 0;
for (int a : A)
{
sum += a;
if (sum >= K)
{