zoukankan      html  css  js  c++  java
  • Aizu

    你有三种盘子,黑薄,白薄,黑厚。

    薄的盘子占1,厚的盘子占k。

    有一个高度为L的桶,盘子总高度不能超出桶的总高度(可以小于等于)。相同颜色的盘子不能挨着放。

    问桶内装盘子的方案数。

    如 L = 5,k = 3时的方案数为6(下图)

    Sample Input1
    5 3
    Sample Output 1
    6
    
    Sample Input 2
    9 10
    Sample Output 2
    5
    
    Sample Input 3
    10 10
    Sample Output 3
    6
    
    Sample Input 4
    20 5
    Sample Output 4
    86
    
    Sample Input 5
    100 2
    Sample Output 5
    3626169232670
    

      

    很简单的DP。

    注意好 k 和当前枚举到的位置的关系。

    f[i][1]表示黑薄,f[i][2]白薄,f[i][3]黑厚。 

    #include <cstdio>
    #include <iostream>
    #include <cstring>
    using namespace std;
    typedef long long LL;
    const int maxn = 100+100;
    LL f[maxn][4];
    
    int main()
    {
        int l, k;
        scanf("%d%d", &l, &k);
    
        f[1][1] = 1;
        f[1][3] = (k <= l ? 1 : 0);
        
        for (int i = 2; i <= l; i++)
        {
            f[i][1] = f[i-1][2];
            f[i][2] = f[i-1][1] + (i-k > 0 ? f[i-k][3]:0);
            if (l-i+1 >= k)
                f[i][3] = f[i-1][2];
        }
    
        LL ans = 0;
        for (int i = 1; i <= l; i++)
            ans += f[i][1] + f[i][3];
    
        printf("%lld
    ", ans);
    }
  • 相关阅读:
    用GDB调试pgAdmin3
    C/C++中的函数重载(overloading)
    C语言中的数据对齐
    一个颓废男人的自我救赎
    python--文件操作
    总结还是记录都不重要,重要的是我裂了
    两数之和
    OSI参考模型体系结构
    不完美,才美
    AB逻辑
  • 原文地址:https://www.cnblogs.com/ruthank/p/9546802.html
Copyright © 2011-2022 走看看