BZOJ3996:[TJOI2015]线性代数(最大权闭合子图)
Description
给出一个N*N的矩阵B和一个1*N的矩阵C。求出一个1*N的01矩阵A.使得
Input
Output
输出最大的D
Sample Input
1 2 1
3 1 0
1 2 3
2 3 7
Sample Output
HINT
1<=N<=500
Solution
没有发现选择一个$a_i$就将花费$c_i$,选择$a_i$和$a_j$将收益$b_{i,j}$,然后就成了最大权闭合子图了。
Code
- #include<iostream>
- #include<cstring>
- #include<cstdio>
- #include<queue>
- #define N (1009)
- using namespace std;
- struct Edge{int to,next,flow;}edge[*N*N];
- int n,b[N][N],c[N],Depth[*N*N],INF,s,e=1e6,sum;
- int head[*N*N],num_edge;
- queue<int>q;
- void add(int u,int v,int l)
- {
- edge[++num_edge].to=v;
- edge[num_edge].next=head[u];
- edge[num_edge].flow=l;
- head[u]=num_edge;
- }
- int DFS(int x,int low)
- {
- if (x==e || !low) return low;
- int f=;
- for (int i=head[x]; i; i=edge[i].next)
- if (Depth[edge[i].to]==Depth[x]+)
- {
- int Min=DFS(edge[i].to,min(low,edge[i].flow));
- edge[i].flow-=Min;
- edge[((i-)^)+].flow+=Min;
- f+=Min; low-=Min;
- if (!low) break;
- }
- if (!f) Depth[x]=-;
- return f;
- }
- bool BFS(int s,int e)
- {
- memset(Depth,,sizeof(Depth));
- Depth[s]=; q.push(s);
- while (!q.empty())
- {
- int x=q.front(); q.pop();
- for (int i=head[x]; i; i=edge[i].next)
- if (!Depth[edge[i].to] && edge[i].flow)
- {
- Depth[edge[i].to]=Depth[x]+;
- q.push(edge[i].to);
- }
- }
- return Depth[e];
- }
- int Dinic(int s,int e)
- {
- int ans=;
- while (BFS(s,e))
- ans+=DFS(s,INF);
- return ans;
- }
- int main()
- {
- memset(&INF,0x7f,sizeof(INF));
- scanf("%d",&n);
- for (int i=; i<=n; ++i)
- for (int j=; j<=n; ++j)
- scanf("%d",&b[i][j]), sum+=b[i][j];
- for (int i=; i<=n; ++i)
- scanf("%d",&c[i]);
- for (int i=; i<=n; ++i)
- for (int j=; j<=n; ++j)
- {
- add(s,(i-)*n+j,b[i][j]);
- add((i-)*n+j,s,);
- }
- for (int i=; i<=n; ++i)
- for (int j=; j<=n; ++j)
- {
- add((i-)*n+j,n*n+i,INF);
- add(n*n+i,(i-)*n+j,);
- add((i-)*n+j,n*n+j,INF);
- add(n*n+j,(i-)*n+j,);
- }
- for (int i=; i<=n; ++i)
- {
- add(n*n+i,e,c[i]);
- add(e,n*n+i,);
- }
- printf("%d\n",sum-Dinic(s,e));
- }
BZOJ3996:[TJOI2015]线性代数(最大权闭合子图)的更多相关文章
- [TJOI2015] 线性代数 - 最大权闭合子图
展开 \(D=(AB-C)A^T\\ =\sum_{i=1}^n(\sum_{j=1}^na_jb_{j,i}-c_i)a_i\\ =\sum_{i=1}^n\sum_{j=1}^na_ia_jb_{ ...
- bzoj 3996 线性代数 —— 最大权闭合子图
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3996 把题中的式子拆开看看,发现就是如下关系: 如果 a[i] == 1 && ...
- 【BZOJ3996】[TJOI2015]线性代数 最大权闭合图
[BZOJ3996][TJOI2015]线性代数 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的 ...
- BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图
BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
- HDU 3879 Base Station(最大权闭合子图)
经典例题,好像说可以转化成maxflow(n,n+m),暂时只可以勉强理解maxflow(n+m,n+m)的做法. 题意:输入n个点,m条边的无向图.点权为负,边权为正,点权为代价,边权为获益,输出最 ...
- [BZOJ 1497][NOI 2006]最大获利(最大权闭合子图)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1497 分析: 这是在有向图中的问题,且边依赖于点,有向图中存在点.边之间的依赖关系可以 ...
- HDU4971 A simple brute force problem.(强连通分量缩点 + 最大权闭合子图)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4971 Description There's a company with several ...
- HDU5855 Less Time, More profit(最大权闭合子图)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5855 Description The city planners plan to build ...
随机推荐
- echart 数据视图 样式重写
来源http://blog.csdn.net/u010705091/article/details/75212724 echarts折线图的数据视图样式重写 在echarts.js中,点击折线图的数据 ...
- Java GC机制详解
垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制. 导读: 1.什么是GC 2.GC常用算法 3.垃圾收集器 4.finalize()方法详解 5. ...
- php静态变量与方法与phar的使用
本节用类与静态变量改造之前的例子:php根据命令行参数生成配置文件 ghostinit.php: <?php class ghostinit{ static $version = 'ghost ...
- django-sql注入攻击
一.原理 什么是sql注入 所谓SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串(注入本质上就是把输入的字符串变成可执行的程序语句),最终达到欺骗服务器执行恶意的SQ ...
- MVC 、JDBC、SQL、DBMS、RDBMS、DDL、DML、DCL
MVC: 全称:Model View Controller: 解释:模型(model)-视图(view)-控制器(controller) Model(模型)表示应用程序核心(比如数据库记录列表). V ...
- 从0x7fffffff+1开始的数学期望
-2147483648 Impel Down 蒙奇·D·路飞来到海底监狱Impel Down营救他的哥哥波特卡斯·D·艾斯 n+1层的海底监狱有n个电梯,每个电梯连接着上下两层 不幸的是,这些电梯是& ...
- 关于子元素的margin-top溢出和元素浮动对父元素高度影响解决方案
以下是个人学习笔记,仅供学习参考. 1.关于子元素的margin-top作用在无margin-top-border的父元素上导致子元素的margin-top溢出问题. 在给没有margin-top-b ...
- vs中nuget命令的用法
一.安装 1.安装指定版本类库install-package <程序包名> -version <版本号> ( 注意:-version <版本号> 可以 ...
- JSP内置对象——session对象
举个购物流程的例子: 这整个购物过程,它是属于一次回话.那么这个session是保存在服务器内存当中,并且它保存着不同用户对应的session,一个用户对应一个session.看下面这幅图: 从图中可 ...
- android:首页点击返回键,两秒内再次点击退出系统
//记录用户首次点击返回键的时间 private long firstTime = 0; /** * 通过监听keyUp 实现双击返回键退出程序 * @param keyCode * @param e ...