codeforces 785C Anton and Fairy Tale(二分)

题目大意(能讲清楚题意也很重要QWQ)


有一个谷仓,一开始是满的(有n个稻谷),每天白天会给谷仓加入m个稻谷,晚上会被鸟吃掉一些(第k天吃掉k个稻谷),问在哪天谷仓会第一次空掉。


一开始就感觉是赤裸裸的数学题,

但还是乖乖去二分了QWQ,这一题二分也要分姿势,如果单纯的用天数来二分的话会爆long long ,二分出(天数-m)的值就可以了

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long int LONGLONG ;
int main(int argc, char const *argv[])
{
    LONGLONG value, brought;
    cin>> value >> brought;
    if(brought>=value){
        cout<<value<<endl;
        return 0;
    }
    LONGLONG ans;
    LONGLONG left = 1 , right = 0x7fffffff,mid;
    while(left<=right){
        mid = left + (right - left)/2;
        if(mid*(mid +1)/2 + brought < value )
            left = mid + 1;
        else 
            right = mid - 1; 
    }
    cout<< left + brought <<endl;
    return 0;
}
你好呀我是AC代码

原文地址:https://www.cnblogs.com/miamiao/p/6759888.html