zoukankan      html  css  js  c++  java
  • CCF_201312-4_有趣的数

      dp题,dp[i][j]代表i位数,j状态的数量。其中,j 的状态表示值有6种。

    0  

    1

    2        √  j = 0

    3

    01

    02      √  j = 1

    03

    12

    13

    23      √  j = 2

    012    √  j = 3

    013

    023    √  j = 4

    123

    0123    √  j = 5

      其中,i位数各状态的数量由i-1位数各状态的数量推出。

    #include<cstdio>
    #include<iostream>
    using namespace std;
    
    #define MOD 1000000007
    long long dp[1005][6];
    
    //2     0   1
    //02    1   3
    //23    2   2
    //012    3   1
    //023    4   2
    //0123    5   0
    int main()
    {
        dp[3][0] = 1;
        dp[3][1] = 3;
        dp[3][2] = 2;
        dp[3][3] = 1;
        dp[3][4] = 2;
        dp[3][5] = 0;
        int n;
        cin >> n;
        for(int i = 4;i <= n;i++)
        {
            dp[i][0] = 1;
            dp[i][1] = (dp[i-1][0]+dp[i-1][1]*2)%MOD;
            dp[i][2] = (dp[i-1][0]+dp[i-1][2])%MOD;
            dp[i][3] = (dp[i-1][1]+dp[i-1][3]*2)%MOD;
            dp[i][4] = (dp[i-1][1]+dp[i-1][2]+dp[i-1][4]*2)%MOD;
            dp[i][5] = (dp[i-1][3]+dp[i-1][4]+dp[i-1][5]*2)%MOD;
        }
        cout << dp[n][5] << endl;
        return 0;
    }
  • 相关阅读:
    观光公交
    luogu 4779 【模板】
    最小生成树(luogu 3366)
    计算系数
    更新区间,求单点—— luogu 3368
    HDU
    HDU
    HDU
    HDU
    BFS
  • 原文地址:https://www.cnblogs.com/zhurb/p/5839620.html
Copyright © 2011-2022 走看看