被蓝宝薄纱。
题意
复制的
给定一场长度为 \(n\) 的正整数序列 \(a\) 和一个长度为 \(m\) 的正整数序列 \(b\)。
现在蓝根据序列 \(a\) 与序列 \(b\) 构造了一个 \(n\) 行 \(m\) 列的正整数矩阵 \(A\) 满足 \(A_{i,j}=a_ib_j\),你需要构造 \(n+1\) 行 \(t\) 列的正整数矩阵 \(B\) 满足以下条件:
- 矩阵的每个元素取值在 \([1,m]\) 间;
- 矩阵同一行的元素两两不相同;
- 矩阵的每列相邻元素不同;
- 在所有满足上面三项要求的矩阵中最小化下式:
请输出构造出的 \(B\) 矩阵的 \(f(B)\) 的值模 \(10^9+7\) 的结果。
数据范围:\(1\le a_i, b_i\le 10^9\),$1\le n, m, t\le 5\times 10^5 \(,\)t\le m$。保证数据有解。
题解
首先拆一下式子:\(A_{i, k} = a_ib_k\),发现 \(a_i\) 可以提出来,于是最优化方案只和 \(b\) 有关。那么可以得到 \(B_1, B_3, B_5 \dots\) 都相等,\(B_2, B_4, B_6\dots\) 也是。于是只需要给前两行找到最优方案。
观察题目,发现相当于给一个左右部大小都为 \(m\) 的二分图找到一组大小恰好为 \(t\) 的匹配,每条边代价是它跨过的区间的 \(b_i\) 和。一个直觉是,边不该跨过太远,而且不该交叉。如果跨过一段空区间,那么可以把匹配压缩,给后面留下更多选择余地的同时,减小了代价。如果匹配交叉,那么可以在满足 \(B_{i, j} \neq B_{i+1, j}\) 的前提下试图交换两个匹配。于是最终剩下的只有这样三种结构:连续的三元环,连续的二元环和连续的链。进行朴素线性 DP,记录当前末尾位置和已经找到的匹配个数,可以做到 \(\Theta(mt)\)。接下来,对于大小恰好为 \(t\) 这个限制,结合二分图最大权匹配的凸性,上一个 wqs 二分即可。
标签:彼世,le,匹配,limits,P8544,禁断,sum,矩阵,正整数 From: https://www.cnblogs.com/kyeecccccc/p/17510419.html