码迷,mamicode.com
首页 > 其他好文 > 详细

Educational Codeforces Round 24 F. Level Generation(三分)

时间:2017-07-03 19:52:15      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:test   pen   long   close   level   int   logs   hid   problem   

题目链接:Educational Codeforces Round 24 F. Level Generation

题意:

给你n个点,让你构造ans条边,使得这ans条边中至少有一半是桥。

让你求ans的最大值。

题解:

首先我们将每一个点按顺序连起来,那么可以构成n-1个桥。

然后我们可以把其中的x个点拿出来连边,这些边都不是桥。

x个点最多能连x*(x-1)条边,然后剩下的n-x个点连的边将会构成桥。

然后就可以构造一个函数关系,详见check函数,然后三分一下就行了。

技术分享
 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=(a);i<=(b);++i)
 3 using namespace std;
 4 typedef long long ll;
 5 
 6 int q;
 7 ll n,ans;
 8 
 9 ll check(ll mid)
10 {
11     ll tmp=(mid*mid-mid)/2;
12     if(n-mid>=tmp)return tmp+n-mid;
13     else if(n-mid>=mid-1)return (n-mid)*2;
14     else return mid-1;
15 }
16 
17 int main(){
18     scanf("%d",&q);
19     while(q--)
20     {
21         scanf("%I64d",&n);
22         ll l,r,mid,mmid;
23         for(l=1,r=n;l<r-1;)
24         {
25             mid=l+r>>1,mmid=mid+r>>1;
26             if(check(mid)>check(mmid))r=mmid;
27             else l=mid;
28         }
29         printf("%I64d\n",max(check(l),max(check(r),check(1))));
30     }
31     return 0;
32 }
View Code

 

Educational Codeforces Round 24 F. Level Generation(三分)

标签:test   pen   long   close   level   int   logs   hid   problem   

原文地址:http://www.cnblogs.com/bin-gege/p/7112644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!