BZOJ3698 XWW的難題 網路流

2022-08-14 01:39:15 字數 1880 閱讀 8604

time limit: 10 sec  memory limit: 128 mb

submit: 533  solved: 275

[submit][status][discuss]

xww是個影響力很大的人,他有很多的追隨者。這些追隨者都想要加入xww教成為xww的教徒。但是這並不容易,需要通過xww的考核。

xww給你出了這麼乙個難題:xww給你乙個n*n的正實數矩陣a,滿足xww性。

稱乙個n*n的矩陣滿足xww性當且僅當:(1)a[n][n]=0;(2)矩陣中每行的最後乙個元素等於該行前n-1個數的和;(3)矩陣中每列的最後乙個元素等於該列前n-1個數的和。

現在你要給a中的數進行取整操作(可以是上取整或者下取整),使得最後的a矩陣仍然滿足xww性。同時xww還要求a中的元素之和盡量大。

第一行乙個整數n,n ≤ 100。

接下來n行每行包含n個絕對值小於等於1000的實數,最多一位小數。

輸出一行,即取整後a矩陣的元素之和的最大值。無解輸出no。

43.1 6.8 7.3 17.2

9.6 2.4 0.7 12.7

3.6 1.2 6.5 11.3

16.3 10.4 14.5 0

129【資料規模與約定】

有10組資料,n的大小分別為10,20,30...100。

【樣例說明】

樣例中取整後滿足xww性的和最大的矩陣為:

3 7 8 18

10 3 0 13

4 1 7 12

17 11 15 0

n行n列分別看成n個點,s為源點,t為匯點.

s向每一行i連(l[i][n],r[i][n])的邊.

每一列i向t連(l[n][i],r[i][n])的邊.

每一行i向每一行j連(l[i][j],r[i][j])的邊.

求有源有匯有上下界的最大流.

最後答案要乘3.

1 #include2 #include3 #include4 #include5 #include6 #include7

using

namespace

std;

8intn;9

double a[105][105

];10

int l[105][105],r[105][105

];11

int s=0,t=999,s=1000,t=1001;12

int q[10005],dis[10005

];13

struct

edge e[80050

];16

int head[10000

],cnt;

17void add(int u,int v,int

w) 21

bool

bfs() 33}

34return dis[s]>=-100000;35

}36int dfs(int now,int

a) 49}50

return

flow;51}

52int

dinic()

55return

ans;56}

57int

main()

67 add(t,s,214748364

);68

int sum=0;69

for(int i=1;il[i][n];}

70for(int i=1;il[n][i];}

71for(int i=1;i<=n-1;i++) 73}

74if(dinic()==sum)

78else printf("

no\n");

79}80/*

8182

*/

view code

BZOJ3698 XWW的難題 有上下界的最大流

xww是個影響力很大的人,他有很多的追隨者。這些追隨者都想要加入xww教成為xww的教徒。但是這並不容易,需要通過xww的考核。xww給你出了這麼乙個難題 xww給你乙個n n的正實數矩陣a,滿足xww性。稱乙個n n的矩陣滿足xww性當且僅當 1 a n n 0 2 矩陣中每行的最後乙個元素等於該...

BZOJ 3698 XWW的難題 上下界網路流

下界為各數下取整的值,取差建立超級源匯點ss,tt跑一遍dinic,先判斷是否可以滿流,然後再跑原圖,ans 3 原值算一遍,右邊算一遍,下邊算一遍 詳見 include include include include define inf 0x7fffffff define db double u...

3698 XWW的難題 有源匯上下界最大流

time limit 10 sec memory limit 128 mb submit 354 solved 178 submit status discuss xww是個影響力很大的人,他有很多的追隨者。這些追隨者都想要加入xww教成為xww的教徒。但是這並不容易,需要通過xww的考核。xww給...