BZOJ3894 文理分科

2021-08-18 15:37:07 字數 1097 閱讀 2569

求最大收益->總收益-最小的丟失->最小割。

對於直接選文理很簡單,直接把點分別連 s,

t s,t

容量分別是文理愉悅度就好了。

然後如何解決相鄰相同的問題呢。我們可以考慮抵消的思想。被割開的是不選的科。直接選文理的殘量網路是什麼樣的?

是選那科多出來的收益。如果這些收益加起來不及 另外乙個集合的一條大容量邊,那麼再次增廣後另外乙個集合中肯定會有殘量,而這個集合就沒有殘量了。也就是這個集合中的邊全部不選了。就是全選另外一科。

所以我們對於每個點新建乙個點,表示這個點和相鄰點相同的收益,連向t。

s同理 最小割求答案。

#include

using namespace std;

const int maxn=8e5+5;

const int inf=2e9;

struct edgee[maxn<<1];

int head[maxn],cur[maxn],cnt=1;

inline void add(int u,int v,int w),head[u]=cnt;

e[++cnt]=(edge),head[v]=cnt;

}queueq;

int dep[maxn],s,t,n,m;

inline int get(int

x,int

y)bool bfs()}}

if(dep[t])return

1; return0;}

int dfs(int u,int flow)}}

return0;}

int dinic()

return ans;

}int output=0,ar[105][105],sc[105][105],sar[105][105],sac[105][105];

int main()

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

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

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

}printf("%d\n",output-dinic());

return

0;}

BZOJ 3894 文理分科

time limit 10 sec memory limit 512 mb submit 194 solved 122 submit status discuss description 文理分科是一件很糾結的事情!雖然看到這個題目的人肯定都沒有糾 結過 小p所在的班級要進行文理分科。他的班級可以用...

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,這個人以...