您的位置:首页 > 其它

CodeForces - 735C Tennis Championship(思维+fib数列)

2017-09-01 10:34 435 查看

CodeForces - 735C Tennis Championship

  题意:一个淘汰赛制比赛,规定比赛的双方的胜场不超过一场,输入人数,输出冠军能够参加的最大比赛场数

  思路:一开始没有注意比赛双方胜场不超过一场,错,转变一下思维,用 F[i] 数组表示最大比赛场数为 i 场时所需要的最小人数,在冠亚军比赛之前

冠军赢了 i  - 1 场,并且与冠军比赛的人和与亚军比赛的人是没有交集的,要的是最小人数,所以亚军是赢了i - 2 场比赛,所以有递推公式F[i] = F[i-1] 

 + F[i-2],即斐波那契数列,输出第一个大于n的F[i] 的  i-1;

#include<iostream>
using namespace std;
long long a[200];
const long long MAXN=1e18;
int main(void)
{
long long n;
cin>>n;
a[1]=2;
a[2]=3;
int i=2;
while(a[i]<=MAXN)
{
i++;
a[i]=a[i-1]+a[i-2];
}
int j=1;
while(n>=a[j])
j++;
cout<<j-1;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CodeForces - 735C