CodeForces

来源:互联网 发布:linux安装libssl dev 编辑:程序博客网 时间:2024/06/12 01:24

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;}