bzoj1221 HNOI2001 軟體開發

2022-06-02 06:54:08 字數 1697 閱讀 8766

time limit: 10 sec  memory limit: 162 mb

submit: 1351  solved: 748

[submit][status][discuss]

某軟體公司正在規劃一項n天的軟體開發計畫,根據開發計畫第i天需要ni個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很多的服務,其中一項服務就是要為每個開發人員每天提供一塊消毒毛巾,這種消毒毛巾使用一天後必須再做消毒處理後才能使用。消毒方式有兩種,a種方式的消毒需要a天時間,b種方式的消毒需要b天(b>a),a種消毒方式的費用為每塊毛巾fa, b種消毒方式的費用為每塊毛巾fb,而買一塊新毛巾的費用為f(新毛巾是已消毒的,當天可以使用);而且f>fa>fb。公司經理正在規劃在這n天中,每天買多少塊新毛巾、每天送多少塊毛巾進行a種消毒和每天送多少塊毛巾進行b種消毒。當然,公司經理希望費用最低。你的任務就是:為該軟體公司計畫每天買多少塊毛巾、每天多少塊毛巾進行a種消毒和多少毛巾進行b種消毒,使公司在這項n天的軟體開發中,提供毛巾服務的總費用最低。

第1行為n,a,b,f,fa,fb. 第2行為n1,n2,……,nn. (注:1≤f,fa,fb≤60,1≤n≤1000)

最少費用

4 1 2 3 2 1

8 2 1 6

38 1. 源點到第i天的入點連容量ni費用為0的邊

2. 第i天的出點到匯點連容量ni費用為0的邊

3. 源點到第i天的出點連容量為inf費用為f的邊(保證每天的出點到匯點滿流)

4. 第i天的入點到第i+a+1(i+b+1)天的出點連容量為inf費用為fa(fb)的邊(代表兩種消毒方式)

5. 第i天的入點到第i+1天的入點連容量為inf費用為0的邊(代表每天剩下的毛巾可以留到下一天)

1 #include2

#define inf 2147483647

3#define rep(i,l,r) for(int i=l;i<=r;i++)

4#define n 10050

5using

namespace

std;

6struct

edgee[5000000];9

int head[n],tot=1,ans,dis[n],from

[n],r[n],n,t,a,b,f,fa,fb,c,s[n];

10bool

used[n];

11 inline void ins(int u,int v,int w,int

cost)

14 inline void insert(int u,int v,int w,int

cost)

17 inline bool

spfa() 27}

28 used[x]=0;29

}30if(dis[t]==inf) return

0;else

return1;

31}3233 inline void

run() 39}

4041 inline int

read()

47int

main ()

57while

(spfa()) run();

58 printf("%d"

,ans);

59 }

view code

BZOJ1221 HNOI2001 軟體開發

某軟體公司正在規劃一項n天的軟體開發計畫,根據開發計畫第i天需要ni個軟體開發人員,為了提高軟體開發人員的效率,公司給軟體人員提供了很多的服務,其中一項服務就是要為每個開發人員每天提供一塊消毒毛巾,這種消毒毛巾使用一天後必須再做消毒處理後才能使用。消毒方式有兩種,a種方式的消毒需要a天時間,b種方式...

狡猾的商人 bzoj1202,HNOI2005

ac通道 分析 因為每月的總收入可以為正,也可以為負,所以要比較兩個區間是否相符,當且僅當它們邊界都相同時才能比較。我們設w i 表示第1 i個月的總收入與第1 fa i 1 個月的總收入之差,及第fa i i個月的總收入。如圖。若i 1,j在同乙個集合中,則第i j個月的總收入為w j w i 1...

1221 HNOI2001 軟體開發

最小費用最大流。建圖 拆點,每個點拆成入點和出點。顯然,要滿足每天的餐巾 於是有附加源匯st,s向入點引一條容量為ni,費用為0的邊,出點向t引一條容量為ni,費用為0的邊。若滿足題目要求,這必有所有出點到t的弧滿載,為了保證這一點,由s向出點引容量為無窮,費用為f的邊。又因為每天沒用完的餐巾可以留...