• UPC10532: 花


    10532: 花

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 45  解决: 19
    [提交] [状态] [讨论版] [命题人:admin]

    题目描述

    某乔为了解花的生长习性,采集了很多春花来研究。
    但其中混杂了一些普通的花,为了区别它们,某乔研究出春花的一些特征:春花有S种形态,每天都会展现出某种形态。在N天中,如果有且仅有一次:连续3天都是某种形态,那么它就是一朵春花。
    例如:假设每天的形态分别为:AABBBC,那么这就是一朵春花。
    但例如:AAABCDDDEEF,AABBBBC,YHNDSB就不是春花。
    第一个因为A和D各有1次连续三天是同一种形态。
    第二个在[3, 6]天中,形态B存在2次连续三天是相同的。
    第三个因为辱骂出题人没有出现连续三天是同一形态。
    现在,某乔想知道,给出N, S,一共存在多少种春花可能表现的形态?答案可能很大,对10^9+7取模
     

    输入

    一个整数T,表示测试数据组数。
    每组测试数据占一行,两个整数,分别表示L和S。

    输出

    对每组数据,输出一个整数表示答案。
     

    样例输入

    1
    3 7
    

    样例输出

    7
    

    提示

    一共有7种形态,每种形态能构成1个方案。

    对于60%的数据,L≤30,S≤26。
    对于80%的数据,L≤10000,S≤26。
    对于100%的数据,L≤100000,S≤100000。

    来源/分类

     
    递推。
    dp[i][j][k],k为0和1.
    0表示到第i天 有连续j天一样 且未出现连续三天一样
    1表示到第i天 有连续j天一样 且已出现连续三天一样
     
    #include "bits/stdc++.h"
    
    using namespace std;
    
    typedef long long ll;
    const int maxn = 1e5 + 1000;
    const int mod = 1e9 + 7;
    ll dp[maxn][4][2];
    
    
    int main() {
        freopen("input.txt", "r", stdin);
        int _, n, s;
        cin >> _;
        while (_--) {
            cin >> n >> s;
            memset(dp, 0, sizeof(dp));
            dp[1][1][0] = s;
    
            for (int i = 2; i <= n; i++) {
                dp[i][1][0] = (s - 1) * (dp[i - 1][1][0] + dp[i - 1][2][0]) % mod;
                dp[i][2][0] = dp[i - 1][1][0] % mod;
                dp[i][3][1] = dp[i - 1][2][0] % mod;
                dp[i][1][1] = (s - 1) * (dp[i - 1][1][1] + dp[i - 1][2][1] + dp[i - 1][3][1]) % mod;
                dp[i][2][1] = dp[i - 1][1][1] % mod;
            }
            cout << (dp[n][1][1] + dp[n][2][1] + dp[n][3][1]) % mod << endl;
        }
        return 0;
    }
  • 相关阅读:
    时间使用
    关于Dubbo说明及备注
    jQuery 的function简单备注
    Eclipse插件
    存储过程和视图的区别
    easyUi jqgrid search
    Python3内置函数——reversed() = 翻转我的世界
    你追求的目标正确吗
    Python3正则表示式(3)
    英语口语学习笔记(13)
  • 原文地址:https://www.cnblogs.com/albert-biu/p/10347682.html
Copyright © 2020-2023  润新知