牛客小白月赛23 C 题解

I. 题意

给定一个有 \(n\) 个顶点的完全图,可以删掉图中的一些边,删掉的边不能超过 \(m\) 条,问删去边之后的图最多能有几个连通分量.

II. 题解

III. 代码

#include<bits/stdc++.h>
using namespace std;
#define LL __int128
LL n,m;
LL bsearch(LL l, LL r)
{
    while (l < r)
    {
        LL mid = (l + r + 1) / 2;
        if (n*(n-1)/2-(n-mid)*(n-1-mid)/2<=m) l = mid;
        else r = mid - 1;
    }
    return l;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long nt,mt;
        cin>>nt>>mt;
        n=(LL)nt,m=(LL)mt;
        cout<<1+(long long)bsearch(0,n-1)<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/DariusOrz/p/12545502.html