博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷3973 TJOI2015线性代数(最小割+思维)
阅读量:4317 次
发布时间:2019-06-06

本文共 2029 字,大约阅读时间需要 6 分钟。

感觉要做出来这个题,需要一定的线代芝士

首先,我们来观察这个柿子。

我们将\(B\)的权值看作是收益的话,\(C\)的权值就是花费。

根据矩阵乘法的原理,只有当\(a[i]和a[j]\)都为\(1\)的时候,才能够获取到\(a[i][j]\)代价,而把\(a[i]\)弄成1,又会付出\(c[i]\)的代价。

那这不就是一个经典的最大全闭合子图模型吗?

我们令\(S \rightarrow (i,j)\)这个坐标对应的点。流量是\(b[i][j]\),表示割去这个边,就舍弃了\(b[i][j]\)的收益

然后\(i\rightarrow t\),流量是\(c[i]\),表示如果这一位是1,要付出\(c[i]\)的代价。
然后\((i,j) \rightarrow i,(i,j)\rightarrow j\)
流量是\(inf\)
因为依赖关系没法取消

// luogu-judger-enable-o2#include
#include
#include
#include
#include
#include
#include
#include
#define mk make_pair#define ll long longusing namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while (!isdigit(ch)) {if (ch=='-') f=-1;ch=getchar();} while (isdigit(ch)) {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f;}const int maxn = 303003;const int maxm = 2e6+1e2;const int inf = 1e9;int point[maxn],nxt[maxm],to[maxm],val[maxm];int cnt=1,n,m;int h[maxn];int b[610][610];int c[510];void addedge(int x,int y,int w){ nxt[++cnt]=point[x]; to[cnt]=y; val[cnt]=w; point[x]=cnt;}void insert(int x,int y,int w){ addedge(x,y,w); addedge(y,x,0);}int s,t;queue
q;bool bfs(int s){ memset(h,-1,sizeof(h)); h[s]=0; q.push(s); while (!q.empty()) { int x = q.front(); q.pop(); for (int i=point[x];i;i=nxt[i]) { int p = to[i]; if (h[p]==-1 && val[i]>0) { h[p]=h[x]+1; q.push(p); } } } //cout<<1<
0 &&h[p]==h[x]+1) { int tmp = dfs(p,min(low,val[i])); val[i]-=tmp; val[i^1]+=tmp; low-=tmp; totflow+=tmp; if (low==0) return totflow; } } if (low>0) h[x]=-1; return totflow;}int dinic(){ int ans=0; while (bfs(s)) { ans=ans+dfs(s,inf); } return ans;}int main(){ n=read(); s=maxn-10; t=s+1; int sum=0; for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { b[i][j]=read(); sum+=b[i][j]; insert(s,(i-1)*n+j,b[i][j]); } for (int i=1;i<=n;i++) c[i]=read(),insert(i+n*n,t,c[i]); for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { insert((i-1)*n+j,i+n*n,inf); insert((i-1)*n+j,j+n*n,inf); } sum-=dinic(); cout<

转载于:https://www.cnblogs.com/yimmortal/p/10168503.html

你可能感兴趣的文章
C# - XML
查看>>
android权限大全
查看>>
BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
查看>>
[原]unity5 AssetBundle 加载
查看>>
[Day15]常用API(Object类、String类)
查看>>
[置顶] 各种流行的编程风格
查看>>
codeforces1029 E.Tree with Small Distances
查看>>
JavaScript——JS上下文中的this值笔记
查看>>
Bootstrap简单使用
查看>>
导航控制器的出栈
查看>>
玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]
查看>>
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
查看>>
Delphi消息小记
查看>>
HNOI2016
查看>>
BZOJ2648: SJY摆棋子&&2716: [Violet 3]天使玩偶
查看>>
JVM介绍
查看>>
结构体,联合体,内存分配
查看>>
JVM垃圾收集器介绍
查看>>
[No0000136]6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
查看>>
【转】MapReduce源码分析总结
查看>>