题解 | #小红的矩阵#

小红的矩阵

http://www.nowcoder.com/questionTerminal/eec2ed5b48b04a1492209ba08593a830

很不错的二分题目:因为我都不知道这是一道二分题目
在第i行里面:i  1, i  2, i  3, i  4, i  5, ......
如果我要这这一行里面求比 小于等于x 的个数:那么答案是 min(,m). 
那么就可以O(n)求出这nm里面有多少个小于等于x的个数!
然后二分即可
总代码:
#include<bits/stdc++.h>
using namespace std;

#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define HelloWorld IOS;


int n, m, k;


bool check(int x){
    int cnt = 0;
    for(int i = 1; i <= n; i ++){
        cnt += min(m, x / i);
    }
    if(cnt >= k) return true;
    else return false; 
}
signed main(){
    HelloWorld;
    
    cin >> n >> m >> k;
    int l = 1, r = n * m, ans = 1;
    while(l <= r){
        int mid = (l + r) / 2;
        if(check(mid)){
            ans = mid;
            r = mid - 1;
        }
        else l = mid + 1;
    }
    cout << ans << endl;
    return 0;
}
全部评论

相关推荐

04-28 15:42
郑州大学 C++
奶茶加冰不加糖会死星...:裸面+午困debuff拉满了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务