John 有需要完成的n个杂务的清单,并且这份清单是有一定顺序的,杂务k(k>1) 的准备工作只可能在杂务 1 至k−1 中。 写一个程序依次读入每个杂务的工作说明。计算出所有杂务都被完成的最短时间。当然互相没有关系的杂务可以同时工作,并且,你可以假定 John 的农场有足够多的工人来同时完成任意多项任务。 【输入...
1、递推法 由于杂务k (k>1)的准备工作只可能在杂务1至k−1中,因此可以通过前面的杂务完成所需时间推出后面的杂务完成所需时间。 由于杂务可能有很多前序任务,每个杂务能完成的时间取决于前序任务中耗时最久的一个。 由于数据是按照工作序号递增给出的,可以在读取数据的时候计算完成每个任务所需的时间。 完成...
AC代码: 1#include<cstdio>2#include<iostream>3#include<vector>45usingnamespacestd;67intn,p,a;8structkkk {9intv;10vector<int>l;11}e[10001];1213inlinevoidsolve() {14for(inti =1;i <= n; i++) {15intans =0;16for(intj =0;j < e[i].l.size(); j++)17ans =max(ans,e[e[i]...
2:每一个节点的最早完成时间等于其前驱结点中最晚的那一个的完成时间加上该节点本身的完成时间 mx[i]=max(mx[i],mx[d]+ti[i]); 1. 3:整个工程的最早完成时间就等于所有结点中,最后完成的那一个结点的最早完成时间 for(int i=1;i<=n;i++) ans=max(ans,mx[i]); 1. 2. #include <iostream> ...
洛谷P1113 杂务(拓扑排序,递归) 题目大意: 有一个有向无圈图,每个节点看作一个任务,一个任务需要完成必须先完成父亲节点的任务,每个任务都有耗时。假设现在所有不相关任务都可以并行执行,问最短多少时间可以把所有任务完成。 解题思路: 首先,注意题目中比较坑的点。这里必须是完成所有父亲任务才能完成本个任务,...
洛谷P1113 杂务 拓扑排序 https://www.luogu.org/problem/P1113 题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些...
洛谷P1113. 杂务 #include<bits/stdc++.h>usingnamespacestd;constintN =10010, M =1000010;intn;intd[N], T[N], f[N];inth[N], e[M], ne[M], idx;queue<int> q;intans;voidadd(inta,intb){ e[idx] = b, ne[idx] = h[a], h[a] = idx ++ ;...
洛谷P1113 杂务 题目: 题目描述 John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗***以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。
洛谷[P1113] 杂务 图论的做法是topsort 一看见有序我们就想到了DAG图,于是用topsort做,对于每一个加入队列的顶点,都用它的时间去更新它所指向的点的时间,本质上仍是DP的思想,dp[i]=max{dp[j]}+ti[i] (j->i). #include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm...
洛谷P1113 杂务(拓扑排序/巧妙做法) 直观做法:拓扑排序 巧妙做法:根据某个任务的前驱标号必定比其小,可以不断地动态更新每个任务完成的最终时间。 // 拓扑排序#include<iostream>#include<cstdio>#include<cstring>#include<queue>#defineMAXN 10010#defineMAXM 200010usingnamespacestd;intn,u,v,w,cnt,in[MAXN...