題目大意:中文題目
具體思路:我們需要求出最大的滿意值,從另一方面想,我們可以求出總的滿意值,然後再求出不符合情況的最小的代價,這兩個相減,就能求出最大的滿意值,這個時候就可以通過最小割來求了(最小割:使得整個圖不連通的最小花費)。
這一篇部落格講的很好:
ac**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include12using
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...