JZOJ1900. 【2010集训队出题】矩阵
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集训队出题】矩阵相关推荐
- [JZOJ1901] 【2010集训队出题】光棱坦克
题目 题目大意 给你个平面上的一堆点,问序列pi{p_i}pi的个数. 满足ypi−1>ypiy_{p_{i-1}}>y_{p_i}ypi−1>ypi并且xpix_{p_i ...
- 【2011集训队出题】跳跳棋
[2011集训队出题]跳跳棋 Time Limits: 1000 ms Memory Limits: 128000 KB Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点 ...
- JZOJ 1980. 【2011集训队出题】Construct
Description 随着改革开放的深入推进-- 小T家要拆迁了-- 当对未来生活充满美好憧憬的小T看到拆迁协议书的时候,小T从一位大好的社会主义青年变成了绝望的钉子户. 由于小T的家位于市中心,拆 ...
- bzoj2144 [2011集训队出题] 跳跳棋 倍增 lca
Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子. 我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把 ...
- 【2011集训队出题】拆迁队
Description: lanxisi带领着他的拆迁队来整治一个街道.这个街道由N个旧房子组成,从左到右编号为1..N.每个旧房子i有一个正整数的美观度Ai. lanxisi希望整个街道从左到右美观 ...
- 哈佛、MIT学者联手,创下矩阵乘法运算最快纪录
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 作为一种基本数学运算,矩阵乘法的运算速度一直是一个重要的研究课题.哈佛 ...
- 【2019暑假集训】08.07比赛总结
省选组真的比A组简单...远古时期的集训队出题难度都不大 比赛思路 传送门 T1( 拯救Protoss的故乡):树形DP???暴力操作显然不可行.模型很像网络流,有的边费用为0,有的边费用为1,所以直 ...
- matlab怎么验证正规阵,正规矩阵的性质及判定
. 矩阵的基本性质 矩阵 的第 ?第 列的元素为 .我们? 或( )表? 1.矩阵的加减法 (1) ,对应元素相加减 (2)矩阵加减法满足的运算法则 a.交换律: 的单位...... 矩阵的迹和行列式 ...
- 数据结构(莫队算法):国家集训队2010 小Z的袜子
[题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...
- 【BZOJ2117】 [2010国家集训队]Crash的旅游计划
[BZOJ2117] [2010国家集训队]Crash的旅游计划 Description 眼看着假期就要到了,Crash由于长期切题而感到无聊了,因此他决定利用这个假期和好友陶陶一起出去旅游. Cra ...
最新文章
- 整理了 65 个 Matplotlib 案例,这能不收藏?
- ElasticSearch elasticsearch-servicewrapper 在linux上的安装部署全程记录
- 从mysql高可用架构看高可用架构设计
- pytorch 吸烟检测yolov5s
- 多模态大咖齐刷刷翻开小红书,明晚7点不见不散
- 如何继承SWT组件?
- OPPO Find X继任者来了!Find Z曝光:搭载骁龙855
- 三菱plc pwm指令_西门子PLC常见的20个问题,你碰到过几个?
- LeetCode-Python-1386. 安排电影院座位(数组)
- 做外贸建站和营销的注意事项
- 第七周 项目4 - 队列数组
- 适合零基础编程学员学习的网站,APP
- CanOpen协议的伺服驱动控制
- 黑苹果 10G 网卡(intel Aquantia)解决方案及big sur 11.x 下驱动方式
- 天嵌IMX6核心板竞品分析(启杨IMX6)
- 计算机按某些键进入用户界面,电脑开机时按什么键进入bios界面
- ETag 和 Last-modified
- 我的世界服务器怎么设置自动拾取,我的世界自动拾取mod
- Error: input elem num(408000) reshaped elem num(102000)
- 深度多目标跟踪算法综述
热门文章
- 使用nat123动态解析公网ip
- EGO Swarm翻译
- python条件判断天气_Python小课—条件判断—学习笔记(4)
- 用Python编写程序,写一个通信录。
- c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
- 北京地区首届区块链黑客松-DoraHacks
- Buckhorn跳羚声卡驱动安装设置方法
- 更新:电脑微信多开v3.5
- iphone个系列尺寸_iphone各机型尺寸
- 坚果pro2官方rom_坚果pro2线刷包_坚果pro2刷机包_坚果pro2固件包_坚果pro2救砖包 - 线刷宝ROM中心...