SSLOJ 1299 選做作業

2021-09-11 18:26:52 字數 1481 閱讀 7005

傳送門

在一堆大部分有先決條件的作業中選擇一部分,使得開心值最大

我們留意到,若出現乙個關於先決條件的環,那麼在其中的作業是永遠也不會達成的

我們可以使用拓撲把環找出,然後對於剩下的圖進行網路流求解

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using namespace std;

inline ll read()

while

(s>=

'0'&&s<=

'9')

return d*f;

}struct nodea[

500005];

int n,tot,ls[

505]

,r[505

],v[

505]

,ans,dep[

505]

,s,e;

int m[

505]

,edge[

505]

[505];

queue<

int> q;

void

addl

(int x,

int y)

; ls[x]

=tot++

; r[y]++;

return;}

void

adde

(int x,

int y,

int w)

void

top()}

return;}

bool bfs()

}}return false;

}int

mnf(

int x,

int flow)}if

(!rest) dep[x]=0

;return rest;

}int

main()

}top()

;memset

(ls,0,

sizeof

(ls));

tot=

1;s=n+

1;e=n+2;

for(

int i=

1;i<=n;i++)}

while

(bfs()

) ans-

=mnf

(s,0x7f7f7f7f);

cout

}

w12選做 E做作業

馬上假期就要結束了,zjm還有 n 個作業,完成某個作業需要一定的時間,而且每個作業有乙個截止時間,若超過截止時間,一天就要扣一分。zjm想知道如何安排做作業,使得扣的分數最少。tips 如果開始做某個作業,就必須把這個作業做完了,才能做下乙個作業。輸入格式 有多組測試資料。第一行乙個整數表示測試資...

貪心 做作業順序。c

有n個作業,每個作業都有自己的 ddl,如果沒有在 ddl 前做完這個作業,那麼老師會扣掉這個作業的全部平時分。需要求出如何安排做作業的順序,才能盡可能少扣一點分。輸入包含t個測試用例。輸入的第一行是單個整數t,為測試用例的數量。每個測試用例以乙個正整數n開頭 1 n 1000 表示作業的數量。然後...

做作業 貪心 並查集

暑假到了,小明的老師們布置了一系列共n個作業給大家做。由於作業的相關性,考慮到同學們假期要去社會實踐,同學們只需做完連續的一段作業即可。每個作業有倆個引數,需要的時間長度和難度係數。老師怕同學們太偷懶,要求連續的一段作業總時間必須不小於指定的m。小明是特別害怕做難題,因此想請學程式設計的你幫他選出一...