在大型工程的施工前, 我們把整個工程劃分為若干個子工程, 並把這些子工程編號為 1、
2、……
、n;
這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工。
由於子工程之間有相互依賴關係, 因此有兩個任務需要我們去完成:
首先,我們需要計算整個工程最少的完成時間;
同時,由於一些不可**的客觀因素會使某些子工程延期, 因此我們必須知道哪些子工程的延期會影響整個工程的延期, 我們把有這種特徵的子工程稱為關鍵子工程, 因此第二個任務就是找出所有的關鍵子工程, 以便集中精力管理好這些子工程,盡量避免這些子工程延期,達到用最快的速度完成整個工程。
為了便於程式設計,現在我們假設:
(1)根據預算,每乙個子工程都有乙個完成時間。
(2)子工程之間的依賴關係是:部分子工程必須在一些子工程完成之後才開工。
(3)只要滿足子工程間的依賴關係,在任何時刻可以有任何多個子工程同時在施工,
也既同時施工的子工程個數不受限制。
(4)整個工程的完成是指:所有子工程的完成。
例如,有五個子工程的工程規劃表: 序號
完成時間
子工程 1
子工程 2
子工程 3
子工程 4
子工程 5
子工程 150
000子工程 240
000子工程 3120
000子工程 471
100子工程 521
111
其中,**中第 i+
1 行 j+
2 列的值如為
0 表示「子工程
i」可以在「子工程
j 」沒完成前施工,為
1表示「子工程
i 」必須在「子工程
j」完成後才能施工。
上述工程最快完成時間為
14 天,其中子工程
1 、3、
4 、
5為關鍵子工程。 第
1 行為 n,
n 是子工程的總個數,n≤
200。 第 2
行為 n個正整數,分別代表子工程
1 、
2、……、
n 的完成時間。 第 3
行到 n+2
行,每行有 n−
1 個
0 或 1。
其中的第 i+
2 行的這些
0 ,
1,分別表示「子工程
i 」與子工程 1、
2 、…、i−
1、i+
1 、…
n 的依賴關係, (i=
1、2、
……、n
) 。
每行資料之間均用乙個空格分開。
如子工程劃分不合理,則輸出 −1
; 如子工程劃分合理,則用兩行輸出: 第 1
行為整個工程最少的完成時間。 第 2
行為按由小到大順序輸出所有關鍵子工程的編號。
55 4 12 7 2
0 0 0 0
0 0 0 0
0 0 0 0
1 1 0 0
1 1 1 1
141 3 4 5
#include
#include
#include
#include
#define max(x,y) ((x)>(y)?(x):(y))
using
namespace
std;
int head[210],nxt[100000],data[100000];
int head2[210],nxt2[100000],data2[100000];
int n,cnt,ans,tot;
int time[210];
int r[210],f[210];
stack
s;priority_queue,greater >q;
void add(int x,int y)
void dfs(int now)
int main()
}for(int i=1;i<=n;i++)
if(r[i]==0)
while(!s.empty())
}if(tot!=n)
for(int i=1;i<=n;i++)ans=max(ans,f[i]);
printf("%d\n",ans);
for(int i=1;i<=n;i++)
if(f[i]==ans)
dfs(i);
int pre=-1;
while(!q.empty())
return
0;}
動態規劃 關鍵子工程
在大型工程的施工前,我們把整個工程劃分為若干個子工程,並把這些子工程編號為1 2 n 這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些 子工程完成之後才能施工。由於子工程之間有相互依賴關係,因此有兩個任務需要我們去完 成 首先,我們需要計算整個工程最少的完成時間 同時,由於一些不可...
spring mvc中輸入關鍵子查詢的步驟
在spring mvc hibernate mysql中,講解下如何做比如在文字框裡輸入中文,然後查詢的一些套路。1 mysql中,首先要做到的是my.ini的客戶編碼為utf8,而資料庫中的表,表裡的字段也用utf 8來整理 2 在serachcontroller中,如下結構 獲得關鍵字 stri...
js中的關鍵子in的使用方法
in.從字面上理解就是什麼在什麼中,在js中差不多也是表達這個意思,主要作用是判斷陣列元素或者物件屬性,也用來遍歷陣列和物件 使用方法 1.判斷 x in arr 這裡要注意的是判斷陣列的話 x表示的是下標,這個意識就是arr陣列中有下標為x的元素嗎 x in obj 現在的x表示的是物件的屬性,這...