[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;
}

[TJOI2015]线性代数(网络流)的更多相关文章

  1. [TJOI2015]线性代数 网络流

    题面 题面 题解 先化一波式子: \[D = (A \cdot B - C)A^T \] \[ = \sum_{i = 1}^{n}H_{1i}\cdot A^T_{i1}\] \[H_{1i} = ...

  2. 【BZOJ 3996】 3996: [TJOI2015]线性代数 (最小割)

    3996: [TJOI2015]线性代数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1368  Solved: 832 Description 给 ...

  3. bzoj 3996: [TJOI2015]线性代数 [最小割]

    3996: [TJOI2015]线性代数 题意:给出一个NN的矩阵B和一个1N的矩阵C.求出一个1*N的01矩阵A.使得 \(D=(A * B-C)* A^T\)最大.其中A^T为A的转置.输出D.每 ...

  4. BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图

    BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...

  5. 【BZOJ3996】[TJOI2015]线性代数(最小割)

    [BZOJ3996][TJOI2015]线性代数(最小割) 题面 BZOJ 洛谷 题解 首先把式子拆开,发现我们的答案式就是这个: \[\sum_{i=1}^n\sum_{j=1}^n B_{i,j} ...

  6. 【LG3973】[TJOI2015]线性代数

    [LG3973][TJOI2015]线性代数 题面 洛谷 题解 正常解法 一大堆矩阵乘在一起很丑对吧 化一下柿子: \[ D=(A*B-C)*A^T\\ \Leftrightarrow D=\sum_ ...

  7. [Luogu 3973] TJOI2015 线性代数

    [Luogu 3973] TJOI2015 线性代数 这竟然是一道最小割模型. 据说是最大权闭合子图. 先把矩阵式子推出来. 然后,套路建模就好. #include <algorithm> ...

  8. 【BZOJ3996】[TJOI2015]线性代数 最大权闭合图

    [BZOJ3996][TJOI2015]线性代数 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的 ...

  9. 【BZOJ】3996: [TJOI2015]线性代数

    题意 给出一个\(N \times N\)的矩阵\(B\)和一个\(1 \times N\)的矩阵\(C\).求出一个\(1 \times N\)的01矩阵\(A\),使得\[ D = ( A * B ...

随机推荐

  1. 侯捷STL学习(三)--分配器测试

    第七节:分配器测试 标准的分配器Allocator,#include<ext/...>都是拓展的 可以用不同的分配器测试同一容器 分配器allocate() & deallocat ...

  2. appium_python 实现手势密码

    直接上代码吧: from appium.webdriver.common.touch_action import TouchAction from driver import AppiumTest # ...

  3. c# webapi2 实用详解

    本文介绍webapi的使用知识 发布webapi的问题 配置问题 webapi的项目要前端访问,需要在web.config配置文件中添加如下配置 在system.webServer节点下面添加 < ...

  4. 简单叙述一下MYSQL的优化

    一个面试题.每次没能完全答对.各位补充一下.或者发表自己的答案:cry: 现在大概列出如下:(忘各位补充)1.数据库的设计尽量把数据库设计的更小的占磁盘空间.1).尽可能使用更小的整数类型.(medi ...

  5. Eloquent ORM模型中添加自定义值

    我们都知道通过Laravel中数据库查询出来的模型对象都是基于数据库字段,今天给大家展示一个 Laravel Eloquent ORM 模型特性-附加值不存在于数据表中. 举个简单的栗子,一篇文章(p ...

  6. 如何使32位Linux支持4G以上内存

    问题 Linux无法支持超过4G的内存,笔者使用的Linux是CentOS 5,机器是DELL PE1950服务器.    原因: X86系统默认寻址能力的限制    解决办法: 安装具有PAE(物理 ...

  7. 虚拟化系列-VMware vSphere 5.1 简介与安装

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mabofeng.blog.51cto.com/2661587/1017680 一 ...

  8. SqlServer——事务一编程进阶(SqlServer技术内幕 T-SQL程序设计 第九章

    事务格式如下: 1.开启事务: begin tran 2.提交事务:commit tran 3.回滚事务:rollback tran 判断事务是提交还是应该回滚有两种方式,一是全局变量 @@error ...

  9. 问题:Custom tool error: Failed to generate code for the service reference 'AppVot;结果:添加Service Reference, 无法为服务生成代码错误的解决办法

    添加Service Reference, 无法为服务生成代码错误的解决办法 我的解决方案是Silverlight+WCF的应用,Done Cretiria定义了需要在做完Service端的代码后首先运 ...

  10. 1-3 分布式系统的瓶颈以及zk的相关特性