编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#46904 #1009. I. 人才吸纳,多方交流合作 Accepted 100 1111 ms 191988 K C++ 11 (Clang) / 1.1 K 20183400682 2020-12-17 21:55:59
显示原始代码
#include <cstdio>
using namespace std;
int T, n, m, i, j, dp[2][5005][5005], ans = 0, mod;
int M(int x) {
    if (x < 0)
        return x + mod;
    if (x >= mod)
        return x - mod;
    return x;
}
int main() {
    scanf("%d", &T);
    while (T--) {
        scanf("%d%d%d", &n, &m, &mod);
        m--;
        for (i = 1; i < n; i++) dp[0][0][i] = 1;
        dp[1][0][0] = 1;
        for (i = 1; i <= m; i++) {
            for (j = 1; j < n; j++) {
                dp[0][i][j] = (dp[0][i - 1][j - 1] + 2LL * dp[0][i - 1][j] + dp[0][i - 1][j + 1]) % mod;
                dp[1][i][j] = (dp[1][i - 1][j - 1] + 2LL * dp[1][i - 1][j] + dp[1][i - 1][j + 1]) % mod;
            }
            dp[1][i][0] = (2LL * dp[1][i - 1][0] + dp[1][i - 1][1] + dp[0][i - 1][1]) % mod;
        }
        for (i = 0; i < n; i++) ans = M(ans + dp[1][m][i]);
        ans = 4LL * ans % mod;
        printf("%d\n", ans);
        for (i = 0; i <= m + 1; i++)
            for (j = 0; j <= n + 1; j++) dp[0][i][j] = dp[1][i][j] = 0;
        ans = 0;
    }
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:1111 ms
内存:191988 KiB

输入文件(1.in

30
27 30 998244353
29 27 1000000007
28 29 1000000009
27 28 998244353
29 29 1000000007
95 92 10000000
<453 bytes omitted>

答案文件(1.out

682141317
383381198
557638379
229805556
134099126
174922995
310993884
738261054
293730751
557225120

<198 bytes omitted>

用户输出

682141317
383381198
557638379
229805556
134099126
174922995
310993884
738261054
293730751
557225120
483566577
447888003
25783034
<170 bytes omitted>

系统信息

Exited with return code 0