51Nod 1105 第K大的数 二分答案
生活随笔
收集整理的這篇文章主要介紹了
51Nod 1105 第K大的数 二分答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很典型的二分答案的題目 碼著
#include<iostream> #include<algorithm> #include<string> #include<string.h> typedef long long ll; using namespace std; const int MAX = 5e4 + 5; ll n, k, a[MAX], b[MAX]; bool C(ll mid) {ll j = n, cnt = 0;for (ll i = 1; i <= n; i++){while (j > 0){if (a[i] * b[j] > mid)j--;else break;}cnt += j;}return cnt >= k; } int main() {ios::sync_with_stdio(false);cin >> n >> k;k = n*n - k+1;for (int i = 1; i <= n; i++)cin >> a[i]>> b[i];sort(a+1, a + n+1);sort(b+1, b + n+1);ll l = a[1] * b[1], r = a[n] * b[n];for(int i=0;i<100;i++){ll mid = (l + r) >> 1;if (C(mid)) r = mid;else l = mid;}cout << r << endl;return 0; }?
轉載于:https://www.cnblogs.com/Egoist-/p/7663701.html
總結
以上是生活随笔為你收集整理的51Nod 1105 第K大的数 二分答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centOS 阿里云yum地址配置
- 下一篇: 作业十三