time limit: 10 sec memory limit: 512 mb
submit: 194 solved: 122
[submit][status][discuss]
description
文理分科是一件很糾結的事情!(雖然看到這個題目的人肯定都沒有糾
結過)
小p所在的班級要進行文理分科。他的班級可以用乙個n*m的矩陣進行
描述,每個格仔代表乙個同學的座位。每位同學必須從文科和理科中選擇
一科。同學們在選擇科目的時候會獲得乙個滿意值。滿意值按如下的方式
得到:
1.如果第i行第秒j的同學選擇了文科,則他將獲得art[i][j]的滿意值,如
果選擇理科,將得到science[i][j]的滿意值。
2.如果第i行第j列的同學選擇了文科,並且他相鄰(兩個格仔相鄰當且
僅當它們擁有一條相同的邊)的同學全部選擇了文科,則他會更開
心,所以會增加same_art[i][j]的滿意值。
3.如果第i行第j列的同學選擇了理科,並且他相鄰的同學全部選擇了理
科,則增加same_science[i]j的滿意值。
小p想知道,大家應該如何選擇,才能使所有人的滿意值之和最大。請
告訴他這個最大值。
input
第一行為兩個正整數:n,m
接下來n術m個整數,表示art[i][j];
接下來n術m個整數.表示science[i][j];
接下來n術m個整數,表示same_art[i][j];
output
輸出為乙個整數,表示最大的滿意值之和
sample input
3 413 2 4 13
7 13 8 12
18 17 0 5
8 13 15 4
11 3 8 11
11 18 6 5
1 2 3 4
4 2 3 2
3 1 0 4
3 2 3 2
0 2 2 1
0 2 4 4
sample output
152
hint
樣例說明
1表示選擇文科,0表示選擇理科,方案如下:
1 0 0 1
0 1 0 0
1 0 0 0
n,m<=100,讀入資料均<=500
最小割。
對於這種兩個中選乙個求最優解的就想到最小割了。
先把答案賦值為所有讀入數字之和。
每個人向源點連文科的邊,向匯點連理科的邊,割掉哪邊表示不選哪科。
然後再對每個人分別建乙個「文科點」和「理科點」。
源點連向「文科點」,「文科點」連向本人和周圍的人(in
f ),只要有乙個人選了理科,這條路就聯通了,需要割掉。
「理科點」同理。
#include
#include
#include
#include
#include
#include
#include
#define m 50005
#define inf 0x3f3f3f3f
using
namespace
std;
int fx[10][5];
int tot,n,m,cur[m],h[m],d[m],v[m],s,t;
struct edge
e[m*10];
int c(int x,int y)
int ok(int x,int y)
void addedge(int from,int to,int cap)
; h[from]=tot;
e[++tot]=(edge);
h[to]=tot;
}int bfs()}}
return v[t];
}int dfs(int x,int a)
}return flow;
}int dinic()
return flow;
}int main()
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
fx[1][1]=fx[2][1]=0,fx[1][2]=1,fx[2][2]=-1;
fx[3][2]=fx[4][2]=0,fx[3][1]=1,fx[4][1]=-1;
fx[5][1]=fx[5][2]=0;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
}for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
}cout
0;}
一開始忘記向本人連邊了。。 BZOJ 3894 文理分科
解四個方程。為了簡潔我們畫出來兩個來解方程推理一下。s a aa s b ab a t ba b t bb s x a和其他相關格仔收益 x t 同上 include include include include include define maxn 1000010 using namespac...
bzoj3894 文理分科
s向每個人連邊,容量是選文科的滿意值 每個點向t連邊,容量是選理科的滿意值。再新建2 n m個點,表示每個人和相鄰的人都選文 p1 或都選理 p2 s向p1連邊,容量為這個人的same art,p1再向這個人和相鄰的四個人都連inf的邊 p2向t連邊,容量為這個人的same science,這個人以...
bzoj3894 文理分科
description 文理分科是一件很糾結的事情!雖然看到這個題目的人肯定都沒有糾 結過 小p所在的班級要進行文理分科。他的班級可以用乙個n m的矩陣進行 描述,每個格仔代表乙個同學的座位。每位同學必須從文科和理科中選擇 一科。同學們在選擇科目的時候會獲得乙個滿意值。滿意值按如下的方式 得到 1 ...