POJ 3685 Matrix 二分套二分

2022-03-16 21:24:35 字數 910 閱讀 2010

有乙個n階方陣,方正中第i行第j列的元素值為\(d_=i^+1e5*i+j^-1e5*j+i*j\),我們需要找出這個方陣中第m小的元素值。

分析這個公式,我們發現:當j固定的時候,這個公式關於i(取值範圍:從0n)是單調增加的,所以這裡我們可以二分乙個答案,然後一列一列的找小於(等於)它的個數,這樣加起來我們就能知道我們列舉的這個答案是第幾小了。

需要注意的是,第乙個最外層的二分有點不同,因為我們二分的答案可能不存在,但是也是符合第m小,這個情況還是需要注意的,這裡需要參看關於二分的第四種形式。二分鏈結

#include#include#include#include#include#include#include#include#includetypedef long long ll;

using namespace std;

const double esp=1e-6;

const int inf=0x3f3f3f3f;

const int maxn=1e6+7;

ll n, m;

ll fun(ll i, ll j)

void dis()

printf("\n"); }}

ll solve(ll value)

if(left!=0)

sum+=left-1;

} return sum;

}int main()

else lt=mid;

} printf("%lld\n", ans);

} return 0;

}

POJ 3685(Matrix,二分搜尋)

題意 給定乙個 n n矩陣,其中aij i2 100000 i j 2 100000 j i j。求矩陣中第 k大的數。題解 自然的想法還是算出來所有的 aij,排序,然後二分找第 k大的數,時間複雜度又來打了o n2 肯定會超時。注意觀察aij i2 100000 i j 2 100000 j i...

poj 3685 Matrix 二分套二分

題意 說的很明確了。思路 很經典的二分套二分,通過觀察表示式我們可以發現當j一定的時候,原表示式的值是跟i相關並且是單調的,所以我們可以二分答案m,然後統計比m小的數有多少個,在統計的時候需要先列舉j,然後再二分i,統計完成後,還需要判斷這個結果是否存在 即是否存在i,j使表示式的值等於m 為此我的...

POJ3685Matrix 二分套二分

傳送門 題目大意 n n的矩陣,a i j i i 100000 i j j 100000 j i j,求矩陣中第k小。n 5 10 4 題解 打個表,發現每一列從上往下單調遞增。在大範圍內二分搜尋,二分第k小為x,然後再二分找矩陣中有多少個比x小的數。include include include...