BZOJ 3894 文理分科

2021-08-18 00:18:52 字數 1345 閱讀 7988

大霧.

對於二選一找最大價值,很明顯是乙個最小割問題。

但是滿足集合要求帶來的附加代價怎麼求呢?

我們新建兩個集合節點,

s-x1 容量為集合1附加代價

y1-t 容量為集合2附加代價

x1->2 容量為inf

2->y1 容量為inf

如果我們割掉紅邊,說明2節點屬於s集合

這時候如果我們割掉紫色邊,仍存在s->2->y1-t的可增廣路徑

但如果我們割掉藍色邊,就不存在可增廣路徑了

於是便滿足了我們的要求

bzoj 3894

#include 

#include

#include

#include

#define inf 0x7fffffff

const

int maxm=2e6+100;

int head[maxm],to[maxm<<1],net[maxm<<1],cap[maxm<<1];

int cnt=1;

int n,m;

int id[600][600],tot;

int dx=,dy=;

inline

void addedge(int u,int v,int c)

namespace maxflow

return deep[t]!=-1;

}int dfs(int now,int flow,int t)

if(!used) deep[now]=-1;

return used;

}inline

int dinic(int s,int t)

}int main()

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

for(int j=1,x;j<=m;j++)

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

for(int j=1,x;j<=m;j++)

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

for(int j=1,x;j<=m;j++)

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

for(int j=1;j<=m;j++)

addedge(id[i][j]+tot,id[i][j],inf),addedge(id[i][j],id[i][j]+tot+tot,inf);

}printf("%d\n",sum-maxflow::dinic(s,t));

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