蒟蒻玄关求调 WA on #5,#6,#7,#10,#13
查看原帖
蒟蒻玄关求调 WA on #5,#6,#7,#10,#13
521554
W1ngD1nGa5ter楼主2025/6/17 10:38

75pts

#include <iostream>

#define int long long

constexpr int MAXN = 200, MOD = 998244353, MAXT = 3e5;

int c, n, T;
int a[MAXN + 5], t[MAXN + 5];
int sum[MAXN + 5];
int pow2[MAXT + 5];

int ans = 0;

int f[MAXT + 1];
int sf[MAXT + 1];

#undef int
int main()
#define int long long
{
    std::cin.tie(nullptr)->sync_with_stdio(false);
    std::cin >> c >> n >> T;
    for (int i = 1; i <= n; ++i)
        std::cin >> a[i];
    for (int i = 1; i <= n; ++i)
        std::cin >> t[i], sum[i] = (sum[i - 1] + t[i]) % MOD;
    pow2[0] = 1;
    for (int i = 1; i <= T; ++i)
        pow2[i] = (pow2[i - 1] << 1) % MOD;

    for (int i = 1; i <= T; ++i)
        f[i] = 0, sf[i] = 0;
    f[0] = 1, sf[0] = 1;
    for (int i = 1; i <= n; ++i)
    {
        for (int j = 1; j <= T; ++j)
            sf[j] = (sf[j - 1] + f[j]) % MOD;
        if (t[i] <= T)
            ans = (ans + 1ll * a[i] * sf[T - t[i]] % MOD * pow2[n - i] % MOD) % MOD;
        for (int j = T; j >= t[i]; --j)
            f[j] = (f[j] + f[j - t[i]]) % MOD;
    }
    for (int i = 1; i <= T; ++i)
        f[i] = 0, sf[i] = 0;
    f[0] = 1, sf[0] = 1;
    for (int i = n; i >= 1; --i)
    {
        for (int j = 1; j <= T; ++j)
            sf[j] = (sf[j - 1] + f[j]) % MOD;
        if (T >= sum[i])
            ans = (ans + 1ll * a[i] * sf[T - sum[i]] % MOD * pow2[i - 1] % MOD) % MOD;
        for (int j = T; j >= t[i]; --j)
            f[j] = (f[j] + f[j - t[i]]) % MOD;
    }

    std::cout << ans << '\n';
    return 0;
}

照着这篇题解打的,可是为啥 WA 啊

2025/6/17 10:38
加载中...