2018 山东省队集训第一轮D4(雾)
T1题意:
给你一个$n\times m$的矩阵$B$,求它能由最少多少个形如两个向量之积$(n\times 1)\times(1\times m)$的矩阵相加得到。
题解:
考虑上界,最多需要$min(n,m)$次相加。以$n$次为例:
每次的矩阵由一个形如$(B_{i,1},B_{i,2},\cdots ,B_{i,m})$的行向量乘一个第$i$行为$1$其余行为$0$的列向量得到。
那么如何减少相加次数呢?我们发现若矩阵中一个行向量能表示成其他若干个行向量乘一个系数$k_i$的形式,
那么这个行向量不需要浪费一次相加的次数,将答案中上述若干个行向量的系数加上$k_i$便等价于加上该向量。
现在问题就转变成了求这$n$行中不能被其他行表示出的行数,发现这就等于高斯消元后非零行的个数。
列向量同理,分别计算行列答案后取$min$即可。
T2题意:
构造$k$棵生成树满足任意两颗生成树没有相同的边,且生成树上任意两点间的路径通过的点均不同(除了起点和终点)。
输出点数$n$(满足$n<=5k$)和$k$棵生成树。
题解:
听dalao们说形如两个菊花拼在一起是可行的。
想了一下,将点分成两部分,每部分$k$个,左边编号奇数,右边偶数。
第$i$棵生成树取第$2i-1$与第$2i$个点作为根,两边开花,中间连线就完事了。
但怎么顺着推到这个结论就不会了……
T3题意:
有一个数字串$s$,你要将$s$切成若干段使得每段的数严格递增。
要求满足最后一个数最小。若有多种方案则满足所有数构成的数列的字典序最大。
题解:
正着dp再倒着dp一遍,能否转移满足单调性可以二分转移位置,随便用什么字符串算法判断两个串组成的数字大小即可。
本来能A的一题,然而两个半小时三道省选题的安排实在是……