poj3685(二分查詢第k小)

2021-07-24 14:09:40 字數 586 閱讀 6081

/*

translation:

給出乙個矩陣,其中每項的值為:i*i + c*i + j*j - c*j + i*j;(i,j分別為所在的行和列)。求其第m小的數字

solution:

二分查詢k小數字

觀察發現矩陣的規律是從上倒下遞增,從左到右遞減。可以根據這個規律來二分查詢有幾個小於當前給出的值。詳見**

note:

date:

2016.11.5

*/#include #include using namespace std;

const int maxn = 50000 +5;

const int c = 1e5;

typedef long long ll;

ll n, m;

ll f(ll i, ll j)

bool check(ll mid)

cnt += lb;

} return cnt >= m;

}int main()

printf("%lld\n", lb);

}return 0;

}

poj 3685 二分套二分

題意 給乙個n n 的矩陣,其中每個元素的大小為 i i 100000 i j j 100000 j i j 現在給n和m,求這個矩陣中第 m 大的元素是什麼。解析 發現上面那個式子是按照,每一列,從小到大遞增的。所以可以先二分設定乙個mi元素,然後按照每一列來二分統計比它小的元素有多少個。如果比它...

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...