BZOJ3996 TJOI2015线性代数】的更多相关文章

就是求$D = A \times B \times A^T - C \times A^T$ 展开也就是$$D = \sum_{i, j} A_i * A_j * B_{i, j} - \sum_{i} C_i * A_i$$ 其中$Ai = 0 \ or \ 1$ 转化成最小割模型,就是一堆东西,选了$i$号物品要支付费用$C_i$,同时选$i$和$j$两个物品可以获得$B_{i, j}$的收益 于是非常简单啦,建图什么的直接看程序好了! /***************************…
题目描述 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D 输入 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. 输出 输出最大的D 样例输入 3 1 2 1 3 1 0 1 2 3 2 3 7 样例输出 2 提示 1<=N<=500 如果没有C矩阵,答案就是B矩阵中每个数的和假设为ans…
Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. Output 输出最大的D Sample Input 3 1 2 1 3 1 0 1 2 3 2 3 7 Sample Output 2 HINT 1<=N<…
先把矩阵式子化简 原式=∑i=1n∑j=1nA[i]∗B[i][j]∗A[j]−∑i=1nA[i]∗C[i] 因此我们发现问题转化为选取一个点所获收益是B[i][j],代价是C[i][j] 这是一个最小割问题. 先把答案记做所有b的和. 将边按照s——>p[i][j](b[i][j])  p[i][j]——>i p[i][j]——>j i——>t(c[i])这样建图后我们删去的那个最小割意义就是花费最少的使得整个图不连通的量 如果删在左边就意味着这件物品我们不要了,如果删去右边的话…
题目 给出一个NN的矩阵B和一个1N的矩阵C.求出一个1*N的01矩阵A.使得 D=(AB-C)A^T最大.其中A^T为A的转置.输出D 输入格式 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. 输出格式 输出最大的D 输入样例 3 1 2 1 3 1 0 1 2 3 2 3 7 输出样例 2 提示 1<=N<=500 题解 我们将式子化简,就是: \(\sum_{i = 1}…
[BZOJ3996][TJOI2015]线性代数(最小割) 题面 BZOJ 洛谷 题解 首先把式子拆开,发现我们的答案式就是这个: \[\sum_{i=1}^n\sum_{j=1}^n B_{i,j}A_iA_j-\sum_{i=1}^n A_iC_i\] 发现\(A\)是\(01\)矩阵,再结合数据范围一脸一个最大权闭合子图的形式. 然后这里有两种做法, 第一种是无脑版本,对于每个\(B_{i,j}\)都建立一个新点. 第二种就手动解一下方程,点数稍微少点,边数一样. #include<ios…
[BZOJ3996][TJOI2015]线性代数 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D  Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. Output 输出最大的D Sample Input 3 1 2 1 3 1 0 1 2 3 2 3 7…
3996: [TJOI2015]线性代数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1054  Solved: 684[Submit][Status][Discuss] Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代…
3996: [TJOI2015]线性代数 题意:给出一个NN的矩阵B和一个1N的矩阵C.求出一个1*N的01矩阵A.使得 \(D=(A * B-C)* A^T\)最大.其中A^T为A的转置.输出D.每个数非负. 分析一下这个乘法的性质或者化简一下容易发现,\(C_i\)代价生效需要\(A_i=1\),\(B_{ij}\)贡献生效需要\(A_i =A_j=1\) 最小割 我成功的把dinic里的括号打错了...gg #include <iostream> #include <cstdio&…
BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. Output 输出最大的D Sample Input 3 1 2 1 3 1 0 1 2 3…
[LG3973][TJOI2015]线性代数 题面 洛谷 题解 正常解法 一大堆矩阵乘在一起很丑对吧 化一下柿子: \[ D=(A*B-C)*A^T\\ \Leftrightarrow D=\sum_{i=1}^n(\sum_{j=1}^na_j*b_{j,i}-c_i)*a_i\\ \Leftrightarrow D=\sum_{i=1}^n\sum_{j=1}^na_i*a_j*b_{i,j}-\sum_{i=1}^na_i*c_i \] 分析一下我们选或不选某个数的贡献: 因为\(\for…
3996: [TJOI2015]线性代数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1368  Solved: 832 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过100…
[Luogu 3973] TJOI2015 线性代数 这竟然是一道最小割模型. 据说是最大权闭合子图. 先把矩阵式子推出来. 然后,套路建模就好. #include <algorithm> #include <cstdio> #include <cstring> #include <queue> using namespace std; const int MAXP=510,MAXN=250510,MAXM=1501000,INF=0x3f3f3f3f; i…
[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]\)的代价.然后,仿效前面那道题的做法,这道题目就是一个最大闭合权子图(满足用割选择一些点,并且有些点必选的条件). #i…
OJ题号:BZOJ3996 题目大意: 给定一个矩阵$B_{nn}$,矩阵$C_{1n}$,存在一个01矩阵$A_{1,n}$使得$d=(A\times B-c)\times A^\mathsf{T}$最大,求$d$的最大值. 思路: 化简以后可以得到$d=\displaystyle{\sum_{i=1}^{n}\sum_{j=1}^{n}}a_ia_jb_{ij}-\displaystyle{\sum_{i=1}^{n}}a_ic_i$. 由于$A$是一个01矩阵,因此我们可以将这题转化为“取…
Portal Description 给定一个\(n\times n\)的矩阵\(B\)和一个\(1×n\)的矩阵\(C\).求出一个\(1×n\)的01矩阵\(A\),使得\(D=(A×B-C)×A^T\)最大,其中\(A^T\)为\(A\)的转置.输出\(D\). Solution 先展开一波. \[\begin{align*} D &= (A×B-C)×A^T \\ &= \begin{bmatrix} \sum_{i=1}^n a_ib_{i1}-c_1 & \sum_{i…
题意 给出一个\(N \times N\)的矩阵\(B\)和一个\(1 \times N\)的矩阵\(C\).求出一个\(1 \times N\)的01矩阵\(A\),使得\[ D = ( A * B - C ) * A^T \]最大,其中\(A ^ T\)是矩阵\(A\)的转置.(\(n<=500\)) 分析 好神的题.首先我们容易推出一个式子: \[ D = \sum_{i=1}^{n} \sum_{j=1}^{n} a_i \times a_j \times b_{i, j} - \sum…
Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D Input 第一行输入一个整数N,接下来N行输入B矩阵,第i行第J个数字代表Bij. 接下来一行输入N个整数,代表矩阵C.矩阵B和矩阵C中每个数字都是不超过1000的非负整数. Output 输出最大的D Sample Input 3 1 2 1 3 1 0 1 2 3 2 3 7 Sample Output 2 HINT 1<=N<…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3996 题解: 好题啊.(不太熟悉矩阵相关,所以按某些博主的模型转换来理解的)首先,那个式子可以化简为D(某个数)=A * B * A' - C * A' ( A'为 A的倒置矩阵) 因为 A 为 01 矩阵,把其考虑为 N个物品选或不选,C[i]对应为i物品的花费,而B[i,j]对应为同时选了i,j两个物品后带来的价值. 所以结合A,B,C的意义,用简单的矩阵知识去理解那个式子,可以知道,…
题目描述 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的转置.输出D 题解 观察上面那个式子发现,当一个bij有贡献时当且仅当a[i]=1&&a[j]=1. 且当a[i]=1时会产生-c[i]的贡献. 然后我naive的以为这是个二元关系最小割. 其实没那么复杂,我们建立源点向矩阵中的每一个元素连b[i][j]的边,然后每个元素向t连c[i]的边. 然后(i,j)向i和j分别连inf的边. 这样割左边相当于i和…
题面 题面 题解 先化一波式子: \[D = (A \cdot B - C)A^T \] \[ = \sum_{i = 1}^{n}H_{1i}\cdot A^T_{i1}\] \[H_{1i} = (\sum_{j = 1}^{n}A_{1j} \cdot B_{ji}) - C_{1i}\] \[D = \sum_{i = 1}^{n}{((\sum_{j = 1}^{n}A_{1j} \cdot B_{ji}) - C_{1i}) A^T_{i1}}\] \[D = \sum_{i = 1…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3996 b[ i ][ j ] 要计入贡献,当且仅当 a[ i ] = 1 , a[ j ] = 1 :-c[ i ] 要计入贡献,当且仅当 a[ i ] = 1:所以建一排 b 的点,建一排 a 的点,源点向 b 的点连它们价值容量的边,b 向它对应的两个 a 连 INF : a 向汇点连它对应的 c 容量的边:割源点到 b 的边表示不选该 b ,割 a 到汇点的边表示选该 a . #in…
把转置矩阵看成逆矩阵吓傻了233 首先按照矩乘推一下式子: \[ D=\sum_{i=1}^n a[i]*(\sum_{j=1}^n a[j]*b[j][i])-c[i] \] \[ D=(\sum_{i=1}^n \sum_{j=1}^n a[i]*a[j]*b[j][i])-(\sum_{i=1}^n a[i]*c[i]) \] 这样,很容易看出b是贡献部分,当a[i]a[j]同时为1的时候贡献b[i][j]+b[j][i],否则不贡献:c是花费部分,a[i]选1就花费c[i] 有正负收益,…
洛谷 题意: 给出一个\(n*n\)的矩阵\(B\),再给出一个\(1*n\)的矩阵\(C\). 求一个\(1*n\)的\(01\)矩阵\(A\),使得\(D=(A\cdot B-C)\cdot A^T\)最大. 思路: 化简最后得: \[ \sum_{i=1}^n\sum_{j=1}^nB_{i,j}A_iA_j-\sum_{i=1}^nA_iC_i \] 之后考虑所有的\(A_i\)都为\(1\),现在要将一部分\(A_i\)变为\(0\),最后的损失最小. 因为最后的\(A\)为\(01\…
展开 \(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_{i,j}-\sum_{i=1}^na_ic_i\) 对每一对 \(i,j\),同时选获得 \(b_{ij}+b_{ji}\) 某个 \(i\) 不选,额外损失 \(c_i\) 考虑最大权闭合子图 \(S \to (i,j)= b_{ij}+b_{ji}\) \((i,j) \to i (j) = \…
感觉要做出来这个题,需要一定的线代芝士 首先,我们来观察这个柿子. 我们将\(B\)的权值看作是收益的话,\(C\)的权值就是花费. 根据矩阵乘法的原理,只有当\(a[i]和a[j]\)都为\(1\)的时候,才能够获取到\(a[i][j]\)代价,而把\(a[i]\)弄成1,又会付出\(c[i]\)的代价. 那这不就是一个经典的最大全闭合子图模型吗? 我们令\(S \rightarrow (i,j)\)这个坐标对应的点.流量是\(b[i][j]\),表示割去这个边,就舍弃了\(b[i][j]\)…
(这篇我就不信有网站来扣) 这个暑假打算刷刷题啥的 但是写博客好累啊  堆一起算了 隔一段更新一下.  7月27号之前刷的的就不写了 , 写的累 代码不贴了,可以找我要啊.. 2017.8.27update : 开学了终于搞到了550  可还行 *数据结构 *可持久化线段树/主席树 *bzoj3932 [CQOI2015] 任务查询系统 : 比较裸的主席树,任务查分一下就好了  cqoi真良心 *bzoj4026 dC Loves Number Theory :  数论个头啊,对每个数分解质因数…
网络流/最小割/最大权闭合图 2333好开心,除了一开始把$500^2$算成25000……导致数组没开够RE了一发,可以算是一次AC~ 咳咳还是回归正题来说题解吧: 一拿到这道题,我就想:这是什么鬼玩意……矩阵乘法早忘了……画了半天也想不起来到底是谁乘谁,只记得有个式子:$c[i][j]=\sum a[i][k]*b[k][j]$ 好吧没关系,既然画图不行了,我们就先拿这个东西,纯代数来搞! D的表达式,里面那层我们可以写成:$\sum a[i][k]*b[k][j] - c[i][j]$ 然而…
博客园的编辑器真的是太蛋疼了= =,想用tex然后上jpg又贴不了链接,真的很纠结啊= = T1:[TJOI2015]线性代数 描述:戳上面吧= = 首先这道题我觉得是这套题最漂亮的一道题了(虽然说学校的题库里居然有一道和这个一模一样的= =) 首先我们可以先把那个式子转化为其中b[i]是表示矩阵a中第i行为0或为1,然后就有两种方法转化为网络流啦 方法一:可以用最大权闭合子图的方法来考虑,将c[i]以及a[i][j]的选择与否视为事件的话,可以发现是一个点数为n*n的最大权闭合子图,就可以愉快…
写在前面的.. 要去WC了好开心的呢.. 但是之前荒废了好多时间呢.. 好吧从明天开始加紧训练,目标是:WC前bzoj300t..(现在是260呢..) 开始吧 来看看完成情况: 40/40 [2017.1.12] 比较荒废的一天.. 满脑子就是查成绩.. 考得好差没心情.. 真的是太影响了整天才做了2道题..(有道题想错了搞了一个下午加半个晚上还没搞出来,真的sb) 3195: [Jxoi2012]奇怪的道路 定义$f_{i,j,state}$表示在处理第$i$个位置,已经连了$j$条边,后面…