D 文理分科 網路流 最小割

2022-03-05 16:44:50 字數 1474 閱讀 8500

題目大意:中文題目

具體思路:我們需要求出最大的滿意值,從另一方面想,我們可以求出總的滿意值,然後再求出不符合情況的最小的代價,這兩個相減,就能求出最大的滿意值,這個時候就可以通過最小割來求了(最小割:使得整個圖不連通的最小花費)。

這一篇部落格講的很好:

ac**:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include12

using

namespace

std;

13 # define ll long

long

14 # define maxn 6000000+100

15 # define inf 0x3f3f3f3f

16int prev[maxn];//

邊的編號

17int

head[maxn];

18int f[2][4]= ,};

19struct

node

20 edge[maxn];

25int

num,st,ed;

26void

init()

2731

void addedge(int fr,int to,int

flow)

3242

bool

bfs()

4360}61

}62return prev[ed]!=-1;63

}64int dfs(int u,int

flow)

6582}83

if(res==0

)84 prev[u]=-1;85

return

res;86}

87int

n,m;

88int

dinic()

8995

return

ans;96}

97bool judge(int t1,int

t2)98

103int

main()

104118

}119

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

120127

}128

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

129143

}144

}145

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

146160

}161

}162

//cout<<1<163

int ans=dinic();

164//

cout<<1<165 printf("

%d\n

",sum-ans);

166return0;

167 }

文理分科 最小割問題

文理分科是一件很糾結的事情!雖然看到這個題目的人肯定都沒有糾結過 小p所在的班級要進行文理分科。他的班級可以用乙個n m的矩陣進行描述,每個格仔代表乙個同學的座位。每位同學必須從文科和理科中選擇一科。同學們在選擇科目的時候會獲得乙個滿意值。滿意值按如下的方式得到 1 如果第i行第秒j的同學選擇了文科...

bzoj3894 網路流 最小割 文理分科

description 文理分科是一件很糾結的事情!雖然看到這個題目的人肯定都沒有糾 結過 小p所在的班級要進行文理分科。他的班級可以用乙個n m的矩陣進行 描述,每個格仔代表乙個同學的座位。每位同學必須從文科和理科中選擇 一科。同學們在選擇科目的時候會獲得乙個滿意值。滿意值按如下的方式 得到 1 ...

bzoj3894 文理分科 網路流 最小割

題目大意 題目鏈結。注釋 略。想法 這種題也是一種套路。我們新建乙個點表示收益點。然後把所有的收益都加一起,求最小割表示代價即可。code include define inf 0x3f3f3f3f define n 1000100 using namespace std int to n 1 nx...