BZOJ2895 球隊預算

2022-05-19 20:48:08 字數 1097 閱讀 8903

在乙個籃球聯賽裡,有n支球隊,球隊的支出是和他們的勝負場次有關係的,具體來說,第i支球隊的賽季總支出是ci*x^2+di*y^2,di<=ci。(贏得多,給球員的獎金就多嘛),

其中x,y分別表示這只球隊本賽季的勝負場次。現在賽季進行到了一半,每只球隊分別取得了a[i]場勝利和b[i]場失利。而接下來還有m場比賽要進行。問聯盟球隊的最小總支出是多少。

費用流同bzoj1449

#include#include

#include

#include

#include

using

namespace

std;

struct

node

}a[110000];int len,last[6100

];void ins(int x,int y,int c,int

d)int

st,ed;

int list[6100

];int d[6100

];bool v[6100

];int

ans;

int pos[6100],pre[6100

];bool

spfa()}}

head++;

v[x]=false

; }

if(d[ed]==999999999) return

false

;

else

return

true;}

int w[5100],l[5100],c[5100],d[5100

];void

flow()

}}int s[5100

];int

main()

for(int i=1;i<=n;i++) ans+=c[i]*w[i]*w[i]+d[i]*l[i]*l[i];

//c[i]*2*w[i]+c[i]-d[i]*2*l[i]+d[i]

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

}flow();

printf(

"%d\n

",ans);

return0;

}

BZOJ1449 球隊收益

乙個整數表示聯盟裡所有球隊收益之和的最小值。3 31 0 2 1 1 1 10 1 0 1 3 3 1 22 3 3 1我們先假設所有的球隊都贏,算出答案。然後每場比賽都要提供乙個輸的場次。考慮費用流。源點向每場比賽連邊,每場比賽向兩隻隊伍連邊,隊伍再向匯點連邊。注意到乙隻隊伍的得分是關於輸的場次的...

JSOI2009 bzoj1449 球隊收益

description input output 乙個整數表示聯盟裡所有球隊收益之和的最小值。首先假設全輸,然後給每場比賽分配乙個贏家,每個隊伍每多贏一場多獲得的收益作為費用。但是有乙個問題,如何保證每次走的是對應的邊?也就是,如何保證贏第一場的時候增加的收益是贏一場減贏零場,而不是贏兩場減贏一場?...

bzoj1449 JSOI2009 球隊收益

傳送門 感覺就是費用流呀。可以發現這道題與之前的費用流題有所不同,因為乙個球隊不論輸還是贏都會獲得收益。這裡就要用到乙個技巧,我們可以假裝比賽雙方都輸,然後修改贏的就ok辣。然後就是每個人向終點連邊,這裡的費用隨著流量的變化而變化,所以我們要用到拆邊法。考慮乙個人從贏win i 次 輸lose i ...