BZOJ 3265 志願者招募加強版 單純形

2021-09-12 10:13:38 字數 1590 閱讀 5924

time limit: 20 sec  memory limit: 512 mb

submit: 848  solved: 436

[submit][status][discuss]

3 3

2 3 4

1 1 2 2

1 2 3 5

1 3 3 2

14題解:這一題類似於bzoj1061,(幾乎相同,只是把一段連續區間改為幾段連續區間而已),做法一樣,單純形模板直接套就行;

具體看**:

1 #include2

using

namespace

std;

3#define cls(x, val) memset(x,val,sizeof(x))

4#define ri register int

5#define eps 1e-6

6 typedef long

long

ll;7 typedef unsigned long

long

ull;

8const

int inf=0x3f3f3f3f

;9 inline int

read()

1013

while(ch>='

0'&&ch<='9')

14return x*f;15}

16const

int n=1005;17

const

int m=10005;18

intn,m;

19double

a[m][n],b[m],c[m],v;

20 inline void pivot(int l,int e)//

矩陣的轉秩

2127 a[l][e]=1/a[l][e];

28for(int i=1;i<=m;++i)

2937 a[i][e]=-a[i][e]*a[l][e];38}

39}40 v+=c[e]*b[l];

41for(int j=1;j<=n;++j)

4245 c[e]=-c[e]*a[l][e];46}

4748 inline double

******x()

4957

if(e==n+1) return

v;58

double mn=inf;

59for(int i=1;i<=m;++i)

6063

if(mn==inf) return

inf;

64pivot(l,e);65}

66}6768

intmain()

6981 b[i]=read();82}

83 printf("

%d\n

",(int)(******x()+0.5

));84

return0;

85 }

view code

posted @

2018-11-24 20:22

songhl 閱讀(

...)

編輯收藏

bzoj 1061 志願者招募

明顯的線性規劃網路流,據說當時考場上就1個人a了?a i j 表示第i種志願者第j天是否工作 p i 表示第i種志願者的人數 sigma a i x p i need x 補充函式y i 則sigma a i x p i need x y x 差分,start i 表示第i種志願者開始工作的時間,e...

BZOJ 1061, 志願者招募

傳送門 最小化招聘給定不同型別志願者,以滿足每日不同人數要求的費用總和。由線性規劃轉化為最小費用最大流來處理。一般按如下步驟進行操作 新增鬆弛變數,將不等號都變為等號。分別用下乙個式子減去上乙個式子,如果每個變數只出現了兩次且符號一正一負,那麼可以轉化為費用流。對於每個式子建立乙個點,那麼每個變數對...

bzoj1061 志願者招募

題意 給m類志願者,第i個志願者從第 l i 天工作到第 r i 天,費用為c i 每種志願者可以選擇無限多人。每一天都有給定的最少志願者數目要求a i 求費用最小的選擇方案,輸出費用。思路 明顯是一道線性規劃可以解決的問題,但我不會寫單純型。聽溪哥說線性規劃都有網路流的等價形式,不過我在網上沒有找...