zoukankan      html  css  js  c++  java
  • Codeforces 1369D TediousLee(递推/找规律)

    题意:高度为 i+1 的一棵 RDC 树可以由高度为 i 的一棵 RDC 树通过这样的规则构造出来:在高度为 i 的 RDC 中,对于只有一个孩子的节点,加上两个孩子节点,没有孩子的节点加上一个节点。问你高度为 h 的 RDC 树有多少个互不重叠的爪型的节点。

    题解:高度为n的树,可以由一个高度为n-1的树加上两个n-2的树加一个根节点构成,直接递推,注意就是先取下层的,在取上层的,当n-1和n-2的根节点都没有取的时候,可以在最高层在加一个爪子。

    #include <bits/stdc++.h>
    #define IOS ios::sync_with_stdio(false);cin.tie(0)
    #define fre freopen("C:\in.txt", "r", stdin)
    #define _for(i,a,b) for(int i=a; i< b; i++)
    #define _rep(i,a,b) for(int i=a; i<=b; i++)
    #define lowbit(a) ((a)&-(a))
    #define inf 0x3f3f3f3f
    #define endl "
    "
    using namespace std;
    typedef long long ll;
    template <class T>
    void read(T &x)
    {
        char c; bool op=0;
        while(c=getchar(), c<'0'||c>'9') if(c=='-') op=1;
        x=c-'0';
        while(c=getchar(), c>='0'&&c<='9') x=x*10+c-'0';
        if(op) x=-x;
    }
    
    const int maxn=2e6+5;
    const int mod=1e9+7;
    ll T, n, f[maxn], used[maxn];
    
    void pre_solve()
    {
       f[1]=f[2]=0;
       _rep(i, 3, maxn){
            if(!used[i-1] && !used[i-2]) used[i]=true;
            f[i]=f[i-1]+2*f[i-2]+used[i];
            f[i]%=mod;
       }
    }
    
    int main()
    {
        //fre;
        pre_solve();
        read(T);
        while(T--)
        {
            read(n);
            printf("%lld
    ", f[n]*4%mod);
        }
        return 0;
    }
  • 相关阅读:
    Centos7LDAP LDAPadmin的完整部署记录(改良版,其它文档太多坑)
    linux weblogic11g 部署
    redis离线集群安装
    Weblogic11g 10.3部署
    jdk安装部署
    tar.xz文件如何解压
    linux-Centos7安装python3并与python2共存
    ssh免密码登录配置方法
    Docker容器安装weblogic详细教程
    linux命令分块总结---多操作才是真理
  • 原文地址:https://www.cnblogs.com/Yokel062/p/13504470.html
Copyright © 2011-2022 走看看