bzoj 3996: [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
Source
经过推导得出:
是一个最大权闭合子图的模型
选择一个Ai==1,会损失Ci;
对于一个点对(i,j),当Ai和Aj同时==1时,可以获得Bij的收益;
由于收益是同时依赖于两个点的,所以可以对每一个点对新建一个附加点tt,从s向其连Bij的边,然后tt向i,j连Inf;
其余的连边就是最大权闭合子图的套路了
最后正权和-最小割即为答案
(玄学剪枝真有用)
- // MADE BY QT666
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<iostream>
- #include<cstring>
- #define RG register
- using namespace std;
- typedef long long ll;
- const int N=2000000;
- const int Inf=19260817;
- int gi()
- {
- int x=0;
- char ch=getchar();
- while(ch<'0'||ch>'9') ch=getchar();
- while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
- return x;
- }
- int head[N],nxt[N],to[N],s[N],cnt=1,S,T,n,sum,q[N],level[N],vis[N],F,c[N];
- int b[600][600],C[1000],tot;
- inline void Addedge(int x,int y,int z) {
- to[++cnt]=y,s[cnt]=z,nxt[cnt]=head[x],head[x]=cnt;
- }
- inline void lnk(int x,int y,int z){
- Addedge(x,y,z);Addedge(y,x,0);
- }
- inline bool bfs(){
- for(RG int i=S;i<=T;i++) level[i]=0,vis[i]=0;
- int t=0,sum=1;
- q[0]=S,level[S]=1,vis[S]=1;
- while(t<sum){
- int now=q[t++];
- if(now==T) return 1;
- for(RG int i=head[now];i;i=nxt[i]){
- int y=to[i];
- if(level[y]==0&&s[i]){
- level[y]=level[now]+1;
- q[sum++]=y;
- }
- }
- }
- return 0;
- }
- inline int dfs(int now,int maxf){
- if(now==T) return maxf;
- int ret=0;
- for(RG int i=head[now];i;i=nxt[i]) {
- int y=to[i],f=s[i];
- if(level[y]==level[now]+1&&f) {
- int minn=min(maxf-ret,f);
- f=dfs(y,minn);
- s[i]-=f;
- s[i^1]+=f;ret+=f;
- if(ret==maxf) break;
- }
- }
- if(!ret) level[now]=0;
- return ret;
- }
- inline void Dinic(){
- while(bfs()) F+=dfs(S,Inf);
- }
- int main(){
- n=gi();
- for(RG int i=1;i<=n;i++)
- for(RG int j=1;j<=n;j++) b[i][j]=gi();
- for(RG int i=1;i<=n;i++) C[i]=gi(),tot+=C[i];
- S=0,T=n+n*n+1;int ans=0,tt=n;
- for(RG int i=1;i<=n;i++) lnk(i,T,C[i]);
- for(RG int i=1;i<=n;i++){
- for(RG int j=1;j<=n;j++){
- tt++;lnk(S,tt,b[i][j]);ans+=b[i][j];
- lnk(tt,i,Inf);lnk(tt,j,Inf);
- }
- }
- Dinic();printf("%d\n",ans-F);
- return 0;
- }
bzoj 3996: [TJOI2015]线性代数的更多相关文章
- bzoj 3996: [TJOI2015]线性代数 [最小割]
3996: [TJOI2015]线性代数 题意:给出一个NN的矩阵B和一个1N的矩阵C.求出一个1*N的01矩阵A.使得 \(D=(A * B-C)* A^T\)最大.其中A^T为A的转置.输出D.每 ...
- ●BZOJ 3996 [TJOI2015]线性代数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3996 题解: 好题啊.(不太熟悉矩阵相关,所以按某些博主的模型转换来理解的)首先,那个式子可 ...
- bzoj 3996 [TJOI2015]线性代数——最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3996 b[ i ][ j ] 要计入贡献,当且仅当 a[ i ] = 1 , a[ j ] ...
- bzoj 3996: [TJOI2015]线性代数【最小割】
把转置矩阵看成逆矩阵吓傻了233 首先按照矩乘推一下式子: \[ D=\sum_{i=1}^n a[i]*(\sum_{j=1}^n a[j]*b[j][i])-c[i] \] \[ D=(\sum_ ...
- 【BZOJ 3996】 3996: [TJOI2015]线性代数 (最小割)
3996: [TJOI2015]线性代数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1368 Solved: 832 Description 给 ...
- 【BZOJ】3996: [TJOI2015]线性代数
题意 给出一个\(N \times N\)的矩阵\(B\)和一个\(1 \times N\)的矩阵\(C\).求出一个\(1 \times N\)的01矩阵\(A\),使得\[ D = ( A * B ...
- 【BZOJ3996】[TJOI2015]线性代数(最小割)
[BZOJ3996][TJOI2015]线性代数(最小割) 题面 BZOJ 洛谷 题解 首先把式子拆开,发现我们的答案式就是这个: \[\sum_{i=1}^n\sum_{j=1}^n B_{i,j} ...
- BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图
BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...
- 【LG3973】[TJOI2015]线性代数
[LG3973][TJOI2015]线性代数 题面 洛谷 题解 正常解法 一大堆矩阵乘在一起很丑对吧 化一下柿子: \[ D=(A*B-C)*A^T\\ \Leftrightarrow D=\sum_ ...
随机推荐
- HTML5到底将给企业带来什么?
HTML5 是近年来互联网行业的热门词汇,火的很.有人高调宣称"APP 将在几年内灭亡,HTML5 取而代之" 改变企业网络广告的模式与分布 广告是企业网络营销的主要方式之一 十几 ...
- laravel MethodNotAllowedHttpException错误一个原因
前两天在写api的时候,出现一个之前都没有碰到过的问题,如图 可以说提示信息是很不友好了,然后打开错误日志,发现报了一个MethodNotAllowedHttpException这样的错误,这样错误我 ...
- 晓莲说-何不原创:如何通过jad把class批量反编译成java文件
背景:前几天在项目开发的时候遇到一个问题,那就是利用myeclipse编写好的一个项目打包成jar包后上传部署到服务器里,之后本地的项目被自己改来改去出现了一些问题,想着把上传到服务器里面的war包下 ...
- scrapy初试水 day01
1.安装pip install Scrapy#一定要以管理员身份运行dos窗口conda install scrapy2.创建项目scrapy startproject hello3.在hello/s ...
- UVA 1508 - Equipment dp状态压缩
题意: 已知n个5元组,从中选出k组,使得这些组中5个位置,每个位置上最大数之和最大. 分析:当k>5时,就是n个5元组最大的数之和,当k<5时,就当做5元组,状态压缩,用00000表示 ...
- icheck如何修改样式大小
icheck默认样式比较大,有需求调整checkbox大小. 1. 最简单的方法可用css3来实现,让整个模块层缩放,不兼容低版本浏览器. transform:scale(0.7,0.7) 2. ...
- HDU2159--二维费用背包,三重背包
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- XAMPP重要文件目录及配置
一.XAMPP 的安装过程 1:下载XAMPP 的 Linux 版 (1.7.4) http://www.apachefriends.org/en/xampp-linux.html#374 2:安装( ...
- 【Codeforces 837D】Round Subset
http://codeforces.com/contest/837/problem/D 分解质因数,即第i个数的因子2的个数为c2[i],因子5的个数为c5[i],末尾零的个数就是min{Σc2[i] ...
- object 覆盖 div 在IE 和Firefox 的解决方案
问题描述 公司产品需要在三维(3D)控件上显示弹框,按钮等,然而三维控件的object覆盖了div,弹框和按钮不能显示 firefox 解决方案 最外层div的背景使用不透明背景色,必须是不透明的哦 ...