Description


100%的数据中N≤600,B 矩阵元素的和<2^31 , C矩阵元素的和<2^31

Solution

  • 拆一下矩乘可以发现一对二元关系,暴力连N2N^2N2边就好了。对于一对i,j向一个新点连inf,新点向T连bi,j,S向i连ci,n2个点,n2条边。
  • 其实是最大闭权和子图。S向i连bi,j,i向j连bi,j,i向T连ci,对于任意i,j分别考虑后就可以发现这是对的。对流量求和,最后S向i连∑bi,j\sum\ bi,j∑ bi,j,变成一个n个点,n2条边的网络流。
  • 对于这一类比较密集的图,SAP是最好的选择。
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define maxn 605
#define maxe 1000005
#define inf ((1ll<<31)-1)
#define I(x) ((x&1)?x+1:x-1)
using namespace std;int n,i,j,k,sum,ans;
int B[maxn][maxn],C[maxn];
int S,T,tot;
int em,e[maxe],nx[maxe],ls[maxn],ec[maxe];
int dis[maxn],gap[maxn],cur[maxn];void read(int &x){x=0; char ch=getchar();for(;ch<'0'||ch>'9';ch=getchar());for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
}void insert(int x,int y,int z){em++; e[em]=y; nx[em]=ls[x]; ls[x]=em; ec[em]=z;em++; e[em]=x; nx[em]=ls[y]; ls[y]=em; ec[em]=0;
}int SAP(int x,int flow){if (x==T) return flow;int use=0,i,tmp;for (i=cur[x];i;i=nx[i]){cur[x]=i;if (ec[i] && dis[e[i]]+1==dis[x]){tmp=SAP(e[i],min(flow-use,ec[i]));use+=tmp,ec[i]-=tmp,ec[i^1]+=tmp;if (flow==use) return use;}}cur[x]=ls[x];if (!(--gap[dis[x]])) dis[S]=T;++gap[++dis[x]];return use;
}int main(){read(n);for(i=1;i<=n;i++) for(j=1;j<=n;j++) read(B[i][j]),ans+=B[i][j];for(i=1;i<=n;i++) read(C[i]);S=n+1,T=n+2,em=1;for(i=1;i<=n;i++) {int sum=0;for(j=1;j<=n;j++) sum+=B[j][i];insert(S,i,sum);insert(i,T,C[i]);}for(i=1;i<=n;i++) for(j=1;j<=n;j++) if (i!=j) insert(i,j,B[j][i]);while (dis[S]<T) ans-=SAP(S,inf);printf("%d",ans);
}

JZOJ1900. 【2010集训队出题】矩阵相关推荐

  1. [JZOJ1901] 【2010集训队出题】光棱坦克

    题目 题目大意 给你个平面上的一堆点,问序列pi{p_i}pi​的个数. 满足ypi−1>ypiy_{p_{i-1}}>y_{p_i}ypi−1​​>ypi​​并且xpix_{p_i ...

  2. 【2011集训队出题】跳跳棋

    [2011集训队出题]跳跳棋 Time Limits: 1000 ms Memory Limits: 128000 KB Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点 ...

  3. JZOJ 1980. 【2011集训队出题】Construct

    Description 随着改革开放的深入推进-- 小T家要拆迁了-- 当对未来生活充满美好憧憬的小T看到拆迁协议书的时候,小T从一位大好的社会主义青年变成了绝望的钉子户. 由于小T的家位于市中心,拆 ...

  4. bzoj2144 [2011集训队出题] 跳跳棋 倍增 lca

    Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把 ...

  5. 【2011集训队出题】拆迁队

    Description: lanxisi带领着他的拆迁队来整治一个街道.这个街道由N个旧房子组成,从左到右编号为1..N.每个旧房子i有一个正整数的美观度Ai. lanxisi希望整个街道从左到右美观 ...

  6. 哈佛、MIT学者联手,创下矩阵乘法运算最快纪录

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 作为一种基本数学运算,矩阵乘法的运算速度一直是一个重要的研究课题.哈佛 ...

  7. 【2019暑假集训】08.07比赛总结

    省选组真的比A组简单...远古时期的集训队出题难度都不大 比赛思路 传送门 T1( 拯救Protoss的故乡):树形DP???暴力操作显然不可行.模型很像网络流,有的边费用为0,有的边费用为1,所以直 ...

  8. matlab怎么验证正规阵,正规矩阵的性质及判定

    . 矩阵的基本性质 矩阵 的第 ?第 列的元素为 .我们? 或( )表? 1.矩阵的加减法 (1) ,对应元素相加减 (2)矩阵加减法满足的运算法则 a.交换律: 的单位...... 矩阵的迹和行列式 ...

  9. 数据结构(莫队算法):国家集训队2010 小Z的袜子

    [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...

  10. 【BZOJ2117】 [2010国家集训队]Crash的旅游计划

    [BZOJ2117] [2010国家集训队]Crash的旅游计划 Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Cra ...

最新文章

  1. 整理了 65 个 Matplotlib 案例,这能不收藏?
  2. ElasticSearch elasticsearch-servicewrapper 在linux上的安装部署全程记录
  3. 从mysql高可用架构看高可用架构设计
  4. pytorch 吸烟检测yolov5s
  5. 多模态大咖齐刷刷翻开小红书,明晚7点不见不散
  6. 如何继承SWT组件?
  7. OPPO Find X继任者来了!Find Z曝光:搭载骁龙855
  8. 三菱plc pwm指令_西门子PLC常见的20个问题,你碰到过几个?
  9. LeetCode-Python-1386. 安排电影院座位(数组)
  10. 做外贸建站和营销的注意事项
  11. 第七周 项目4 - 队列数组
  12. 适合零基础编程学员学习的网站,APP
  13. CanOpen协议的伺服驱动控制
  14. 黑苹果 10G 网卡(intel Aquantia)解决方案及big sur 11.x 下驱动方式
  15. 天嵌IMX6核心板竞品分析(启杨IMX6)
  16. 计算机按某些键进入用户界面,电脑开机时按什么键进入bios界面
  17. ETag 和 Last-modified
  18. 我的世界服务器怎么设置自动拾取,我的世界自动拾取mod
  19. Error: input elem num(408000) reshaped elem num(102000)
  20. 深度多目标跟踪算法综述

热门文章

  1. 使用nat123动态解析公网ip
  2. EGO Swarm翻译
  3. python条件判断天气_Python小课—条件判断—学习笔记(4)
  4. 用Python编写程序,写一个通信录。
  5. c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
  6. 北京地区首届区块链黑客松-DoraHacks
  7. Buckhorn跳羚声卡驱动安装设置方法
  8. 更新:电脑微信多开v3.5
  9. iphone个系列尺寸_iphone各机型尺寸
  10. 坚果pro2官方rom_坚果pro2线刷包_坚果pro2刷机包_坚果pro2固件包_坚果pro2救砖包 - 线刷宝ROM中心...