牛客国庆集训派对Day2 F平衡二叉树(构造规律)

版权声明:哈哈哈哈哈哈哈哈哈哈哈哦吼~~ https://blog.csdn.net/threeh20/article/details/82927711

https://www.nowcoder.com/acm/contest/202/F

队友发现在层数到达d之前和d之后的答案规律不同。。。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[100];
int main()
{
    int T;
    ll n,d;
    ll er[100];
    er[0]=1;
    for(int i=1;i<=62;i++)
    er[i]=er[i-1]*2;
    while(~scanf("%lld%lld",&n,&d))
    {
        if(n==1||d==0)
        {
            cout<<0<<endl;
            continue;
        }
        if(d>=n)
        {
            cout<<er[n-1]-1<<endl;
            continue;
        }
        for(ll i=1;i<=d;i++)
        a[i]=i;
        for(int i=d+1;i<=n-1-d;i++)
        a[i]=a[i-1]+1+a[i-d-1];
        printf("%lld\n",er[n-1]-1-a[n-d-1]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/threeh20/article/details/82927711