2023年東莞市資訊學特長生測試題 工程 題解

2021-10-09 06:11:29 字數 1883 閱讀 2896

工程

張三是某工程公司的專案工程師。一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,並把這些子工程編號為1、2、…、n

nn;這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工,公司需要工程師張三計算整個工程最少的完成時間。

對於上面問題,可以假設:

1、根據預算,每乙個子工程都有乙個完成時間。

2、子工程之間的依賴關係是:部分子工程必須在一些子工程完成之後才開工。

3、只要滿足子工程間的依賴關係,在任何時刻可以有任何多個子工程同時在施工,也即同時施工的子工程個數不受限制。

例如:有五個子工程的工程規劃表:

現在對於給定的子工程規劃情況,及每個子工程完成所需的時間,如果子工程劃分合理則求出完成整個工程最少要用的時間,如果子工程劃分不合理,則輸出-1。

第1行為正整數n

nn,表示子工程的個數(n

nn<=200)

第2行為n

nn個正整數,分別代表子工程1、2、…、n

nn的完成時間。

第3行到n

nn+2行,每行有n

nn-1個0或1,其中的第k

kk+2行的這些0或1,分別表示「子工程k」與子工程1、2、…、k

kk-1、k

kk+1、…、n

nn的依賴關係(k

kk=1、2、…、n

nn)。每行資料之間均用空格分開。

如果子工程劃分合理則輸出完成整個工程最少要用的時間,如果子工程劃分不合理,則輸出-1。

input 1

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

output 1

14input 2

55 4 12 7 2

0 1 0 0

0 0 0 0

0 0 1 0

1 1 0 0

1 1 1 1

output 2

-1入度為0的點作為起點進入佇列

根據佇列裡的數做dfs

dfsdf

s(df

sdfs

dfs時會有新的數進入)

如果有子工程是以當前點為依賴

入度減1,,它的時間更新

入度若為0就加入佇列

最後答案在出度為0的點中找最大值

如果有數沒有進入過佇列

說明存在環

輸出-1

#include#include#include#includeusing namespace std;

int f[220],s[220],a[220][220],c[220],r[220],q[220],h,t,n,ans,sum;

bool p[220];

void dfs(int d) }}

int main()

t=0,sum=n;

for (int i=1;i<=n;i++)

if (!r[i])

while (h

for (int i=1;i<=n;i++)

if (!c[i]) //沒有人依賴它

ans=max(ans,f[i]); //更新答案

if (t

printf("-1");

else printf("%d",ans);

return 0;

}

東莞市2023年資訊學特長生測試題 工具軟體

description 大家都知道任何資料 符號在計算機中都是以二進位制的形式表示的。小明是某軟體公司的工程師,公司應客戶的需要,要開發乙個小工具程式,用來實現任意進製之間的轉換。可以將給定的m進製數x轉化為n進製的p 所有數資料均能在長整型範圍內處理 現在也將這個任務交給你,請你來完成這個程式。i...

2023年東莞市資訊學特長生測試題 島嶼的緣分

2009年東莞市資訊學特長生測試題 島嶼的緣分 time limit 10000ms memory limit 65536k total submit 102 accepted 52 case time limit 1000ms description 人和人的相識是一種緣分,其實人有幸到某地也是一...

東莞市2023年特長生 T3 工程

一天公司接下一項大型工程,該公司在大型工程的施工前,先要把整個工程劃分為若干個子工程,並把這些子工程編號為1 2 n 1 2 n 1 2 n 這樣劃分之後,子工程之間就會有一些依賴關係,即一些子工程必須在某些子工程完成之後才能施工,公司需要工程師張三計算整個工程最少的完成時間。對於上面問題,可以假設...