完全图(二分+求和)

完全图

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

作者:mywgo
链接:https://ac.nowcoder.com/discuss/388973?type=101&order=0&pos=1&page=0
来源:牛客网

二分+求和公式(这个题的精度错了无数次)
以五个顶点的完全图为例
删去四个边(共删4个),形成两个连通图-->再删去三个边(共删4+3),形成三个完全图-->再删去两个边(共删4+3+2),形成四个完全图-->再删去一个边(共删4+3+2+1),形成五个完全图。
因此,只要判断区间就可以。
五个顶点的完全图共有5个区间。(使用两分法查找)
每个区间对应的范围可以推导出来:
0:0
1:0+4
2:0+4+(4-1)
3:0+4+(4-1)+(4-2)
4:0+4+(4-1)+(4-2)+(4-1)-->(5-1)4-4(3)/2

所以通过上式,可以推导出公式为图片说明 ,化简一下:图片说明

作者:mywgo
链接:https://ac.nowcoder.com/discuss/388973?type=101&order=0&pos=1&page=0
来源:牛客网

#include<iostream>
#include<vector>
#include<string>
#include<algorithm> 
#include<map>
#include<climits> 
using namespace std;
typedef long long ll; 
long double n,m; 
long double check(ll mid){//求和公式 
    return (n-1-mid+n)*mid/2.0;
}
int main(){
    ll t;
    cin>>t;
    while(t--){
        cin>>n>>m;
        ll left=0,right=n-1;
        while(left<=right){
            ll mid=(left+right)/2;
            if(check(mid)>m){
                right=mid-1;
            }else{
                left=mid+1;
            }
        }
        cout<<left<<endl;  
    }
    return 0;
}
全部评论

相关推荐

11-17 11:15
门头沟学院 Java
金山办公终于发offer了,但薪资和平台都不如已有的offer打算拒了,A不了薪资,不满意直接拒了,留给需要的人嘿嘿嘿时间线:10.14线下一面&nbsp;,10.23线上二面,下午发测评,11月1日HR面,11月14日电话谈薪,11月17日直接发offer
star__plat...:好兄弟干的好啊,解气。金山第一次笔难度高的离谱,第二次简单的离谱全A了,用人部门筛选中估计最后还是要挂我,就这今早智联招聘还给我发信息让我投
offer帮选
点赞 评论 收藏
分享
09-29 16:59
已编辑
门头沟学院 Java
牛客96609213...:疯狂背刺,之前还明确设置截止日期,还有笔试,现在一帮人卡在复筛,他反而一边开启扩招,还给扩招的免笔试,真服了,你好歹先把复筛中的给处理了再说
投递大疆等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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