您的位置:首页 > 教育 > 锐评 > 平台网站怎么推广_中国人民法院公告网_关键词生成器_厦门谷歌seo公司

平台网站怎么推广_中国人民法院公告网_关键词生成器_厦门谷歌seo公司

2025/1/15 20:39:00 来源:https://blog.csdn.net/TangKenny/article/details/143591476  浏览:    关键词:平台网站怎么推广_中国人民法院公告网_关键词生成器_厦门谷歌seo公司
平台网站怎么推广_中国人民法院公告网_关键词生成器_厦门谷歌seo公司

题目描述:

在某个项目中有多个任务(用 tasks 数组表示)需要您进行处理,其中 t a s k s [ i ] = [ s i , e i ] tasks[i] = [si, ei] tasks[i]=[si,ei],你可以在 s i < = d a y < = e i si <= day <= ei si<=day<=ei 中的任意一天处理该任务。请返回你可以处理的最大任务数。

注:一天可以完成一个任务的处理。

输入描述:

第一行为任务数量 n , 1 < = n < = 100000 n,1 <= n <= 100000 n1<=n<=100000。后面 n 行表示各个任务的开始时间和终止时间,用 si 和 ei 表示, 1 < = s i < = e i < = 100000 1 <= si <= ei <= 100000 1<=si<=ei<=100000

输出描述:

输出为一个整数,表示可以处理的最大任务数。

补充说明:

示例1

输入:

3
1 1
1 2
1 3

输出:

3

说明:

第一天处理任务 1,第二天处理任务 2,第三天处理任务 3。

题解

贪心算法,优先处理最早结束的任务,留下更多的时间处理其他任务

源码 Java

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;public class MaxTask {static Input input;static {input = new Input("3\n" +"1 1\n" +"1 2\n" +"1 3");}public static void main(String[] args) {int n = Integer.parseInt(input.nextLine());List<Task> tasks = new ArrayList<>();for (int i = 0; i < n; i++ ) {String[] ss = input.nextLine().split(" ");tasks.add(new Task(Integer.parseInt(ss[0]), Integer.parseInt(ss[1])));}Collections.sort(tasks);int max = 0;int time = 0;for (int i = 0; i < tasks.size(); i++) {// 任务开始前空闲一定可以做if (time <= tasks.get(i).start) {time = tasks.get(i).start + 1;max++;} else if (time <= tasks.get(i).end) {// 任务开始后 到结束时间有空闲, 该任务可以做time++;max++;}}System.out.println(max);}static class Task implements Comparable<Task>{int start;int end;public Task(int start, int end) {this.start = start;this.end = end;}public int compareTo(Task o ) {return this.end - o.end;}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com