题目链接:https://codeforces.com/contest/1288/problem/D
题目大意:
给定一个n*m的矩阵,m很小,现在你需要在矩阵中选择两行,将他们组成一个新的数列,每个位置为你选择的两行位置的最大值,也就是Ci=max(Ai,Bi)。
现在你需要让这个新的数列的最小值最大,问你选择哪两行可以做到?
思路:
首先,最小值最大的问题可以考虑二分答案mid,考虑如何去验证。
我们发现矩阵列数很小,m<=8,如果将一行中大于等于mid的元素用1表示,小于mid的元素用0表示,那么这一行最多只有2^m种可能,也就是256种可能。
这样,我们就可以256^2暴力去寻找两个位置i和j,只要第i行的二进制x与第j行的二进制y满足,就说明他两个的组合会出现一个所有元素均为1,也就是都大于等于mid的情况,那么这个mid就是合法的。
最终复杂度为