zoukankan      html  css  js  c++  java
  • 2020牛客寒假算法基础集训营5 F 碎碎念

    https://ac.nowcoder.com/acm/contest/3006/F

    dp[i][0]表示到了第i句话,是前一次提交错误转移过来的

    dp[i][1]表示带了第i句话,是前一次提交正确转移过来的

    若前一次提交错误,那前一次的前一次肯定正确

    dp[i][0]=dp[i-k][1]

    若前一次提交正确,那前一次的前一次可能正确也可能错误

    dp[i][1]=dp[i-1][0][dp[i-1][1];

    #include<cstdio>
    
    using namespace std;
    
    #define N 100001
    
    const int mod=1e9+7; 
    
    int dp[N][2],sum[N]; 
    
    int main()
    {
        int k;
        scanf("%d",&k);
        dp[0][1]=1;
        for(int i=1;i<N;++i)
        {
            if(i>=k) dp[i][0]=dp[i-k][1];
            dp[i][1]=(dp[i-1][1]+dp[i-1][0])%mod;
        }
        for(int i=1;i<N;++i) 
        {
            sum[i]=sum[i-1];
            sum[i]=(sum[i]+dp[i][0])%mod;
            sum[i]=(sum[i]+dp[i][1])%mod;
        }
        int T,l,r;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&l,&r);
            printf("%d
    ",(sum[r]-sum[l-1]+mod)%mod);
        }
        return 0;
    }
  • 相关阅读:
    Map
    Collection接口之Set
    Collection接口之List、泛型
    简介
    递归
    File类
    转换流InputStreamReader、OutputStreamWriter
    springmvc
    集合
    SpringCloud学习笔记
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/12304935.html
Copyright © 2011-2022 走看看