因為要限制每個比賽,一勝一負,流量無法限制。
所以我們可以假設先全敗,然後選擇某個人獲勝,然後用差值來改變。
假設當前a勝,b負。然後獲勝一次的差值為:
c*(a+1)
*(a+1)
+ d*
(b-1)*
(b-1
)- c*a*a - d*b*b
= c*(2
*a+1
)- d*(2
*b-1
)
ac**:
#pragma gcc optimize("-ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const
int inf=
0x3f3f3f3f
;const
int n=
2e4+
10,m=
1e6+10;
int n,m,s,t,res,a[n]
,b[n]
,c[n]
,d[n]
,d[n]
,st[n]
,vis[n]
,num[n]
;int head[n]
,nex[m]
,to[m]
,w[m]
,flow[m]
,tot=1;
inline
void
ade(
int a,
int b,
int c,
int d)
inline
void
add(
int a,
int b,
int c,
int d)
inline
intspfa()
}return d[t]
}int
dfs(
int x,
int f)
}return fl;
}inline
intzkw()
signed
main()
for(
int i=
1;i<=n;i++)}
cout<<
zkw(
)+res;
return0;
}
JSOI2009 球隊收益 Solution
題意 有n nn個球隊,如果一支球隊勝場為x ix i xi 負場為y iy i yi 那麼他們的獎金即為ci xi2 di y i2 c i times x i 2 d i times y i 2 ci xi 2 d i y i2 現在知道了這些球隊現在的勝場和負場,以及一些不確定的比賽,問總獎金...
1449 2895 JSOI2009 球隊收益
題目鏈結 題目大意 n 支球隊,球隊的支出和勝負場次有關,具體來說,第i支球隊的賽季總支出是ci x2 di y 2,其中x,y 分別表示這只球隊本賽季的勝負場次。現在賽季進行到了一半,每只球隊分別取得了ai 場勝利和bi 場失利。而接下來還有 m 場比賽要進行。問聯盟球隊的最小總支出是多少。題解 ...
JSOI2009 bzoj1449 球隊收益
description input output 乙個整數表示聯盟裡所有球隊收益之和的最小值。首先假設全輸,然後給每場比賽分配乙個贏家,每個隊伍每多贏一場多獲得的收益作為費用。但是有乙個問題,如何保證每次走的是對應的邊?也就是,如何保證贏第一場的時候增加的收益是贏一場減贏零場,而不是贏兩場減贏一場?...