首页 > 其他分享 >1494. 并行课程 II

1494. 并行课程 II

时间:2023-06-16 14:22:34浏览次数:49  
标签:xi int 并行 relations 学期 II 课程 1494 修课

给你一个整数 n 表示某所大学里课程的数目,编号为 1 到 n ,数组 relations 中, relations[i] = [xi, yi]  表示一个先修课的关系,也就是课程 xi 必须在课程 yi 之前上。同时你还有一个整数 k 。

在一个学期中,你 最多 可以同时上 k 门课,前提是这些课的先修课在之前的学期里已经上过了。

请你返回上完所有课最少需要多少个学期。题目保证一定存在一种上完所有课的方式。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/parallel-courses-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.Arrays;

class Solution {
    public int minNumberOfSemesters(int n, int[][] relations, int k) {
        int[] dp = new int[1 << n];
        int[] need = new int[1 << n];
        int INF = Integer.MAX_VALUE;
        Arrays.fill(dp, INF);

        for (int[] relation : relations) {
            need[1 << (relation[1] - 1)] |= 1 << (relation[0] - 1);
        }

        dp[0] = 0;
        for (int i = 1; i < 1 << n; i++) {
            need[i] = need[i & (i - 1)] | need[i & (-i)];
            if ((need[i] | i) != i) {
                continue;
            }

            int x = need[i] ^ i;
            if (Integer.bitCount(x) <= k) {
                dp[i] = Math.min(dp[i], dp[need[i]] + 1);
            } else {
                for (int j = x; j > 0; j = (j - 1) & x) {
                    if (Integer.bitCount(j) <= k) {
                        dp[i] = Math.min(dp[i], dp[i ^ j] + 1);
                    }
                }
            }
        }
        return dp[(1 << n) - 1];
    }
}

标签:xi,int,并行,relations,学期,II,课程,1494,修课
From: https://www.cnblogs.com/tianyiya/p/17485413.html

相关文章

  • GPU技术在大规模计算和并行计算中的应用和挑战
    目录1.引言2.技术原理及概念3.实现步骤与流程4.应用示例与代码实现讲解5.优化与改进GPU技术在大规模计算和并行计算中的应用和挑战随着计算机硬件的不断发展和计算能力的提高,大规模计算和并行计算已经成为了人工智能和机器学习领域的重要研究方向。而GPU(图形处理器)......
  • [转]git rebase -i修改多个commiit
    原文:https://zhuanlan.zhihu.com/p/340007149 有的时候我们会突然发现某个地方需要修改,最常见的某个不应该被提交的文件被提交了进来。我们希望它不只是在后序的版本当中不再出现,而是希望整个从git仓库当中移除掉。这个时候我们就需要修改git之前的历史记录。这个时候应该怎......
  • 环形链表 II
    环形链表II题目:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。如果pos是-1,则在该链表中没有环。注意,pos仅仅是用于标识环的情况,并不会作为参数传递到函数中......
  • 会议室 II
    会议室II题目:描述给定一系列的会议时间间隔intervals,包括起始和结束时间[[s1,e1],[s2,e2],…](si<ei),找到所需的最小的会议室数量。样例1输入:intervals=[(0,30),(5,10),(15,20)]输出:2解释:需要两个会议室会议室1:(0,30)会议室2:(5,10),(15,20)样例2输入:inter......
  • Bash 并行爬虫
    Bash并行下载脚本。1900页,分190次下载完。foriin{0..190};do{letstart=$i*10letend=$i*10+10for((page=$start;page<$end;page++))do{echo"down$page"curl"http://www.site.org/advice/index.asp?DjjIntPcnt=$page"-osrc/$page.txt}......
  • PPT| XX华MES整合IIOT技术提升企业数字化智造(可下载))
    PPT总共有50页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询PPT总共有50页,受篇幅有限,有需要PPT的同学可以关注:智能制造数字化咨询......
  • SK-II受核污染疑云解除,关键时刻物联网技术保障消费者健康安全
    SK-II近日就“神仙水”被指受到产地滋贺县核辐射污水影响作出回应。SK-II称,相关报道属于不实信息,目前源头新闻发布者已经删除相关消息。滋贺县政府此前已于2015年3月发布过相关声明,表示当地并未受到核辐射影响。SK-II同时表示,旗下所有产品和成分上市之前均经过安全性评估,遵守所在市......
  • 代码随想录算法训练营第七天| 344.反转字符串 、 541. 反转字符串II、 剑指Offer 05.
     344.反转字符串代码:1voidreverseString(vector<char>&s){23inti=0;4intj=s.size()-1;5while(i<j)6{7charmid=s[i];8s[i]=s[j];9s[j]=mid;1011i++;12......
  • Java8-并行流的使用
    Java8中的并行流使用publicclassStreamTest{publicList<Person>constructPersons(){List<Person>persons=newArrayList<Person>();for(inti=0;i<5;i++){Personp=newPerson(i,"name"+......
  • IIS配置代理转发到Apache或其他端口监听服务
    目标:iis运行asp程序;Apache运行php,iis监听占用80端口,由iis转发代理到Apache的php应用;iis转发到其他应用,如tornado服务。iis配置代理转发及路由重写https://iis-umbraco.azurewebsites.net/downloads官网下载Urlrewrite和ApplicationrequestRouter两个exe并安装选择上面安装......