【leecode】 Course Schedule】的更多相关文章

class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { //初始化入度 vector<); //初始化邻接表 vector<vector<)); ; i < prerequisites.size(); i++) { int first = prerequisites.at(i).first; int…
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1] Given the total number of courses and a l…
题意: 有N个事件,M台机器.事件有开始时间,持续时间,要在结束时间之前完成,问是否能完成所有事件? 非自己思考出来的 建图:把每个任务和每一天都看做一个点,添加源点和汇点.源点与每个任务之间连一条边,容量为完成该任务所需处理次数.若第i个任务可以在Si至Ei天处理,则由该任务向这些天分别连一条边,容量为1,表示此任务每天只能被处理一次.最后,从每一天连一条到汇点的边,容量为机器数M,表示每天可以处理M个任务.若求出的最大流等于所有任务需要处理的次数之和,说明能完成任务:否则,不能完成任务. #…
学习了链表结构,链表中元素的访问,对象指针的初始化与赋值,链表的创建(多个节点链接起来),进位计算的表达. 100ms /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* addTwoNumbers(L…
学习使用标准模板库(STL)中的map,hash_map.涉及数据结构知识:哈希表,红黑树. map的使用方法 https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html hash_map的原理和使用方法 https://blog.csdn.net/ddkxddkx/article/details/6555754 两遍哈希表 class Solution { public: vector<int> twoSum(vector<int&…
题目大意:给定 N 个任务和两台机器,每个任务可以在任意一台机器上执行,每台机器有 N 个启动状态,不同任务需要机器在不同的状态下执行,求执行所有任务需要多少个不同的状态. 题解:由于一个任务一定要被两台机器中的一台执行,可以将任务看作边,连接两台机器的对应启动状态.所要求的是这个二分图的最大独立集,因此,只需求出其最大匹匹数即可. 代码如下 #include <bits/stdc++.h> #define fi first #define se second #define pb push_…
题意:给你n个任务的开始时间和结束时间,一个机器同时最多执行一个任务,问你最少要几个机器.保证机器最少的前提下,问你每个机器的开动时间(最后一次关闭-第一次开启)之和最少是多少. 把这些线段画在数轴上,最大的重叠数就是最少要几个机器. 开动时间怎么算呢?第i个机器的开动时间其实就是(再也不需要>=i台机器的第一个位置 - 需要>=i台机器的第一个位置).对每个机器的这个值求和即可. 要先离散化. #include<cstdio> #include<algorithm>…
目录 List Description Input Output Sample Input Sample Output HINT Solution Code Position: http://poj.org/problem?id=1325 List Description 我们知道机器调度是计算机科学中一个非常经典的问题.调度问题有很多种,具体条件不同,问题就不同.现在我们要处理的是两个机器的调度问题. 有两个机器A和B.机器A有n种工作模式,我们称之为mode_0,mode_l,--,mode…
def twoSum(nums, target): """ 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] :type nums: List[int] :type target: int :rtype: List[int] """ dic = {} for i, num in enumerate(nums): if num in d…
每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电子邮件还可能包含 ',' 或 '+'. 如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发到本地名称中没有点的同一地址.例如,"alice.z@leetcode.com” 和 “alicez@leetcode.com” 会转发到同一电子邮件地址. (请注意,…