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

xiaoxiao2021-02-28  90

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; }
转载请注明原文地址: https://www.6miu.com/read-69500.html

最新回复(0)