POJ 3685 Matrix

题意

好像是《挑战程序设计竞赛》上面的原题。题意是给你一个矩阵上每一项的位置与值对应的公式,让你求第k小的项。

思路

我们仔细看公式会发现对于每一个固定的j,公式结果随i单调递增,这样我们可以二分答案,对于mid值,我们在每一列再二分一次,求出比这个数小的数的个数,然后每一列的个数相加,就是这个数的排名。然后这个排名可以作为二分中判定的基准。这里还有一种替代思路,就是对于每一列不二分,而是解一个二次方程直接求出每一列的分排名。

代码

 

Leave a Reply

Scroll to top