傳送門
在一堆大部分有先決條件的作業中選擇一部分,使得開心值最大
我們留意到,若出現乙個關於先決條件的環,那麼在其中的作業是永遠也不會達成的
我們可以使用拓撲把環找出,然後對於剩下的圖進行網路流求解
#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。小明是特別害怕做難題,因此想請學程式設計的你幫他選出一...