洛谷P3973 - [TJOI2015]线性代数】的更多相关文章

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…
感觉要做出来这个题,需要一定的线代芝士 首先,我们来观察这个柿子. 我们将\(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]\)…
洛谷 题意: 给出一个\(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\…
最大权闭合子图,神题 这不是线性代数,这是网络流. 我们看见这是一堆矩阵的运算,而且最后变成了一个数,那么我们就想到,把这个矩阵乘法的过程用具体的数字推出来 我们发现,a是一个01矩阵,然后其实就可以化成这么一个问题: 有n个东西,选了i,j两件东西能得到b[i,j]的价值,然而选i需要c[i]的花费,选j需要c[j]的花费-- 这是一个经典的最小割模型,最大权闭合子图,详见胡伯涛论文. 建立S,T. S连(i,j)边,边权为b[i,j],(i,j)连i.连j边,边权均为∞,i向T连边,边权为c…
P3975 [TJOI2015]弦论 题目描述 为了提高智商,ZJY开始学习弦论.这一天,她在<String theory>中看到了这样一道问题:对于一个给定的长度为\(n\)的字符串,求出它的第\(k\)小子串是什么.你能帮帮她吗? 输入输出格式 输入格式: 第一行是一个仅由小写英文字母构成的字符串\(s\) 第二行为两个整数\(t\)和\(k\),\(t\)为\(0\)则表示不同位置的相同子串算作一个,\(t\)为\(1\)则表示不同位置的相同子串算作多个.\(k\)的意义见题目描述. 输…
题目大意:求一个字符串的第$k$大字串,$t$表示长得一样位置不同的字串是否算多个 题解:$SAM$,先求出每个位置可以到达多少个字串($Right$数组),然后在转移图上$DP$,若$t=1$,初始值赋成$Right$数组大小,否则赋成$1$ 卡点:无 C++ Code: #include <algorithm> #include <cstring> #include <cstdlib> #include <cstdio> #define maxn 500…
题目大意:对于一棵随机生成的$n$个结点的有根二叉树,所有不同构的形态等概率出现(这里同构当且仅当两棵二叉树根相同,并且相同节点的左儿子和右儿子都相同),求叶子节点个数的期望是多少? 题解:令$f_n$表示$n$个节点的二叉树的个数,$g_n$表示这$f_n$棵二叉树的叶子节点个数和. 打(ti)表(jie)发现:$g_n=n f_{n-1}$ 证明:而每棵$n-1$个点的二叉树恰好有$n$个位置可以悬挂一个新的叶子,所以每棵$n-1$个点的二叉树被扩展了$n$次.发现会算重复,但是对于一个有$…
[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…
[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…
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙) (匈牙利的复杂度惊人,1e6秒过) #include <cstdio> ]; ],fir[],to[],nex[]; int N,n,p,q; void add(int p,int q) { nex[++N]=fir[p];to[N]=q;fir[p]=N; } bool f…