• [牛客练习赛53] A.超越学姐爱字符串 [dp]


    链接:https://ac.nowcoder.com/acm/contest/1114/A
    来源:牛客网

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 524288K,其他语言1048576K
    64bit IO Format: %lld

    题目描述

    超越学姐非常喜欢自己的名字,以至于英文字母她只喜欢“c”和“y”。因此超越学姐喜欢只含有“c”和“y”的字符串,且字符串中不能出现两个连续的“c”。请你求出有多少种长度为n的字符串是超越学姐喜欢的字符串。答案对1e9+7取模。

    输入描述:

    输入一个整数n。
    1<=n<=100000

    输出描述:

    输出一个整数表示答案。
    示例1

    输入

    复制
    3

    输出

    复制
    5

    说明

    cyy,cyc,yyy,yyc,ycy

    题解:
      挺简单的一道DP题,dp[i][0]表示前i位、第i位为c的数量,dp[i][1]表示前i位、第i位为y的数量,则
        dp[i][0] = dp[i-1][1]; (第i位为c,第i-1位必须为y)
        dp[i][1] = dp[i-1][0] + dp[i-1][1](第i位为y,第i-1位可以是c/y)
      
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod = 1e9+7;
    ll dp[100005][2];
    int main(){
        ll n;
        scanf("%lld",&n);
        dp[1][0] = dp[1][1] = 1;
        for (int i = 2;i <= n;++i){
            dp[i][0] = dp[i-1][1];
            dp[i][1] = (dp[i-1][0] + dp[i-1][1]) % mod;
        }
        printf("%lld
    ",(dp[n][1] + dp[n][0])%mod);
        
    }
    n = int(input())
    dp=[[0]*2 for i in range(n+1)]
    dp[1][0] = 1
    dp[1][1] = 1
    k = int(1e9+7)
    for i in range(2,n+1):
        dp[i][0] = dp[i-1][1]
        dp[i][1] = (dp[i-1][0] + dp[i-1][1]) % k
    print((dp[n][0]+dp[n][1]) % k)
    有趣的是比赛结束后看了眼别人的代码,发现本题其实是Fibonacci数列。
    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    vector<int> memo;
    #define mod 1000000007
    int main() {/// 斐波那契数列
        int x;
        scanf("%d",&x);
        memo = vector<int>(x+1,-1);
        memo[0]=0;
        memo[1]=2;
        memo[2] = 3;
        for(int i=3;i<=x;i++)
        {
            memo[i]=memo[i-1]+memo[i-2];
            memo[i]%=mod;
        }
        cout<<memo[x]<<endl;
        return 0;
    }
  • 相关阅读:
    zabbix监控nginx的性能
    常用iptables命令
    shell脚本小示例
    打印菜单脚本
    ping主机脚本
    Linux网络配置脚本
    多磁盘自动分区自动挂载脚本
    深入js系列-类型(null)
    深入js系列-类型(开篇)
    first-child、last-child误解
  • 原文地址:https://www.cnblogs.com/mizersy/p/11660633.html
Copyright © 2020-2023  润新知