[TJOI2015]线性代数(最大权闭合子图,网络流)

为了提高智商,ZJY开始学习线性代数。她的小伙伴菠萝给她出了这样一个问题:给定一个n*n的矩阵B和一个1×n的矩阵C。求出一个1×n的01矩阵A。使得\(D=(A×B−C)×A^T\)最大,其中 \(A^T\) 为A的转置。输出D。

这相当于:若同时选择X和Y,获得\(B[x][y]\)收益,若选择了X,需要\(C[x]\)的代价。然后,仿效前面那道题的做法,这道题目就是一个最大闭合权子图(满足用割选择一些点,并且有些点必选的条件)。

#include <cstdio>
#include <cstring>
using namespace std; const int maxn=3e5+5, maxm=1e6+5, INF=1e9;
int n, m, src, dst, ans;
inline int min(int x, int y){ return x<y?x:y; } struct Edge{
int to, nxt, f;
}e[maxm*2];
int fir[maxn], cnte=1;
void addedge(int x, int y, int v){
Edge &ed=e[++cnte];
ed.to=y; ed.nxt=fir[x]; ed.f=v; fir[x]=cnte;
} int q[maxn], head, tail, dep[maxn];
bool bfs(){
memset(dep, 0, sizeof(dep)); dep[src]=1;
head=tail=0; q[tail++]=src; int u;
while (head<tail){
u=q[head++];
for (int i=fir[u]; ~i; i=e[i].nxt)
if (e[i].f&&!dep[e[i].to]){
dep[e[i].to]=dep[u]+1;
q[tail++]=e[i].to;
}
}
return dep[dst];
} int cur[maxn];
int dfs(int u, int flow){
if (u==dst) return flow;
for (int i=cur[u]; ~i; i=e[i].nxt, cur[u]=i)
if (dep[e[i].to]==dep[u]+1&&e[i].f){
int minm=dfs(e[i].to, min(flow, e[i].f));
e[i].f-=minm; e[i^1].f+=minm;
if (minm) return minm;
}
return 0;
} int Dinic(){
int ans=0, t;
while (bfs()){
memcpy(cur, fir, sizeof(fir));
while (t=dfs(src, INF)) ans+=t;
}
return ans;
} int main(){
memset(fir, -1, sizeof(fir));
scanf("%d", &n); int t;
src=0; dst=n*(n+1)+1;
for (int i=1; i<=n; ++i)
for (int j=1; j<=n; ++j){
scanf("%d", &t); ans+=t;
addedge(src, i*n+j, t); addedge(i*n+j, src, 0);
addedge(i*n+j, i, INF); addedge(i, i*n+j, 0);
addedge(i*n+j, j, INF); addedge(j, i*n+j, 0);
}
for (int i=1; i<=n; ++i){
scanf("%d", &t);
addedge(i, dst, t); addedge(dst, i, 0);
}
ans-=Dinic();
printf("%d\n", ans);
return 0;
}

最新文章

  1. 在wex5平台grid显示问题
  2. 慕课网Java高并发秒杀学习
  3. Effective Objective-C 2.0 — 第9条:以“类族模式”隐藏实现细节
  4. html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)
  5. DBCP参数介绍
  6. HDU_2045——RPG问题,递推
  7. Kubernetes 设计概要
  8. ubuntu环境下python虚拟环境的安装
  9. python判断类型:想知道一个对象(实例或者变量)是什么类型,什么结构的
  10. HDFS及其各组件的机制
  11. Centos 7 上使用nginx为Node.js配置反向代理时错误:(13: Permission denied) while connecting to upstream
  12. Nginx安装成Windows服务
  13. 捕捉JDialog的关闭事件
  14. 未能找到类型或命名空间名List
  15. 这样的UI UX设计师描述你满意吗?
  16. springboot-18-springboot的参数封装
  17. java实现邮箱验证的功能
  18. composer error when run composer update
  19. 六 Selector
  20. Java条件语句之 if

热门文章

  1. SpringBoot自动化配置之三:深入SpringBoot:自定义EnableAutoConfiguration
  2. Unreal Engine 4的常见Tips
  3. Python函数(五)-高阶函数
  4. Windows下自由创建.htaccess文件的N种方法
  5. SPARC T4 RAID Setup (ZT)
  6. 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
  7. DAY15-web框架本质及第一个Django实例
  8. Android添加Menu菜单
  9. [patl2-001]紧急救援
  10. 02 mybatis环境搭建 【spring + mybatis】