当前位置: 首页 > news >正文

苏州餐饮 网站建设2023年5月最新疫情

苏州餐饮 网站建设,2023年5月最新疫情,校园云网站建设,网页设计怎么做网站题目描述: 你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] [ai, bi] 表示如果你想选 bi 课程,你 必须 先选 ai 课程。 有的课会有直接的先修课程&am…

题目描述: 

你总共需要上 numCourses 门课,课程编号依次为 0 到 numCourses-1 。你会得到一个数组 prerequisite ,其中 prerequisites[i] = [ai, bi] 表示如果你想选 bi 课程,你 必须 先选 ai 课程。

  • 有的课会有直接的先修课程,比如如果想上课程 1 ,你必须先上课程 0 ,那么会以 [0,1] 数对的形式给出先修课程数对。

先决条件也可以是 间接 的。如果课程 a 是课程 b 的先决条件,课程 b 是课程 c 的先决条件,那么课程 a 就是课程 c 的先决条件。

你也得到一个数组 queries ,其中 queries[j] = [uj, vj]。对于第 j 个查询,您应该回答课程 uj 是否是课程 vj 的先决条件。

返回一个布尔数组 answer ,其中 answer[j] 是第 j 个查询的答案。

示例 1:

 

输入:numCourses = 2, prerequisites = [[1,0]], queries = [[0,1],[1,0]]
输出:[false,true]
解释:课程 0 不是课程 1 的先修课程,但课程 1 是课程 0 的先修课程。

示例 2:

输入:numCourses = 3, prerequisites = [[1,2],[1,0],[2,0]], queries = [[1,0],[1,2]]
输出:[true,true]

数据范围:

  • 2 <= numCourses <= 100
  • 0 <= prerequisites.length <= (numCourses * (numCourses - 1) / 2)
  • prerequisites[i].length == 2
  • 0 <= ai, bi <= n - 1
  • ai != bi
  • 每一对 [ai, bi] 都 不同
  • 先修课程图中没有环。
  • 1 <= queries.length <= 104
  • 0 <= ui, vi <= n - 1
  • ui != vi

分析思路

    首先看样例的图,大概率是图论题,再一个题目中有很明显的先后关系,所以可以锁定这个题是一道拓扑排序题。 当然这个题范围很小 n是100,Floyd的3层循环好像也能求解(类似传递闭包),代码应该更容易实现。 不过我想用bitset实现,那样的话 数据n如果开1e4(10000) 也没事, bitset的空间复杂度是(n*n/64).

   AC的过程还是有点艰难,之前写题没怎么用过vector,刚才初始化少加1 看了半天 o.O

因为题目编号范围是0~n-1,不太习惯,怕0这个数字会未知错误, 所以我给所有的编号都进行了+1处理

f[x][y]为1 表示x->y有边;  为0 表示无边   

class Solution {
public:vector<bool> checkIfPrerequisite(int numCourses, vector<vector<int>>& prerequisites, vector<vector<int>>& queries) {vector<int>d(numCourses+1);vector<vector<int>> edge(numCourses+1);for(vector<int> x:prerequisites){edge[x[0]+1].push_back(x[1]+1);//建边d[x[1]+1]++; //处理入度}queue<int>q;for(int i=1;i<=numCourses;i++){if(!d[i]){q.push(i);}}vector<int>ans;//ans里面存的是拓扑序列,注意:拓扑序列不是唯一的while(q.size()){int t=q.front();q.pop();ans.push_back(t);for(int x:edge[t]){if(--d[x]==0){q.push(x);}}}bitset<110>f[numCourses+1];for(int i=numCourses-1;i>=0;i--){int x=ans[i];for(int y:edge[x]){f[x][y]=1;f[x]|=f[y];//相当于位运算,时间复杂度是O(1)}}//处理答案vector<bool>ans1;for(auto x:queries){if(f[x[0]+1][x[1]+1])ans1.push_back(1);else ans1.push_back(0);}return ans1;}
};
http://www.hkea.cn/news/360620/

相关文章:

  • 找人合伙做网站平台仿站定制模板建站
  • 深圳市网站建设科技公司腾讯网网站网址
  • wordpress语言文件夹seo销售好做吗
  • 河北建设集团官网西安网站seo
  • 在外汇局网站做登记报告恢复原来的百度
  • 做外贸做的很好的网站全国疫情突然又严重了
  • 开发app需要什么样的团队百度seo优化培训
  • ftp上传网站之后软文什么意思范例
  • 询广西南宁网站运营推广系统
  • wordpress侧边栏小工具佛山网站优化
  • 用vs做网站原型企业培训课程有哪些内容
  • wordpress评论自定义百度刷排名seo
  • 四川建设网官网登录入口泉州seo外包
  • 网站有备案 去掉备案网络营销意思
  • 新建网站推广给企业百度问一问在线咨询客服
  • 曹鹏wordpress建站seo视频广东疫情防控措施
  • 网站开发的岗位排名优化工具
  • 岳阳做网站怎么做推广让别人主动加我
  • 不断改进网站建设公司百度官网优化
  • 万户网站宁波网站制作优化服务
  • 潍坊快速网站排名网站是怎么做出来的
  • 聚美优品的pc网站建设注册网址
  • 陕西省住房与城乡建设厅网站免费b站推广软件
  • 淮南市住房与城乡建设部网站网店买卖有哪些平台
  • 网页qq表情佛山百度快速排名优化
  • 网站建设方案论文1500社会新闻最新消息
  • 网站组建 需求分析市场监督管理局职责
  • 云课堂哪个网站做的好厦门关键词优化seo
  • 中企动力沈阳分公司seo免费诊断电话
  • 网站vps被黑湖人最新排名最新排名