zoukankan      html  css  js  c++  java
  • 洛谷P1373 小a和uim之大逃离

    一眼看过去就是 f[a的位置][b的位置][a的容量][b的容量][谁走] 嘛.

    结果一算,时间空间复杂度都过不去..我好菜啊

    题目只要求计算差值, 所以记录a - b差值即可.

    注意这样定义的话差值可能为负数, 所以要找等价关系.

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int MOD = 1000000007;
    const int MAXN = 8e2 + 5;
    const int MAXK = 15 + 1;
    
    int f[MAXN][MAXN][MAXK][2];
    int a[MAXN][MAXN];
    int N, M, K;
    
    int main()
    {
        cin>>N>>M>>K; ++K;
        for(int i = 1; i <= N; i++)
            for(int j = 1; j <= M; j++){
                scanf("%d", &a[i][j]);
                a[i][j] %= K;
                f[i][j][a[i][j]][0] = 1;
            }
        
        int ans = 0;
        for(int i = 1; i <= N; i++)
            for(int j = 1; j <= M; j++)
                for(int k = 0; k < K; k++){
                    (f[i + 1][j][(k + a[i + 1][j]) % K][0] += f[i][j][k][1]) %= MOD;
                    (f[i][j + 1][(k + a[i][j + 1]) % K][0] += f[i][j][k][1]) %= MOD;
                    (f[i + 1][j][(k - a[i + 1][j] + K) % K][1] += f[i][j][k][0]) %= MOD;
                    (f[i][j + 1][(k - a[i][j + 1] + K) % K][1] += f[i][j][k][0]) %= MOD;
                    (ans += f[i][j][k][1] * (k == 0)) %= MOD;
                }
                
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    ACM spiral grid
    ACM 数独
    Codeforces Round #242 (Div. 2) A. Squats
    Codeforces Round #242 (Div. 2) B. Megacity
    Codeforces Round #242 (Div. 2) C. Magic Formulas
    Coder-Strike 2014
    Coder-Strike 2014
    Coder-Strike 2014
    ACM Same binary weight
    C puzzles详解【13-15题】
  • 原文地址:https://www.cnblogs.com/wsmrxc/p/9292967.html
Copyright © 2011-2022 走看看