社区讨论

求卡常

P2198杀蚂蚁参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mii9ejtk
此快照首次捕获于
2025/11/28 10:44
3 个月前
此快照最后确认于
2025/11/29 13:55
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;
using ai2 = array<int, 2>;
const int N = 3e3 + 10;
__int128 n, r, g, b, T;
__int128 f[2][N][N], ans;
__int128 rd() {
    __int128 x = 0;
    char ch = getchar();
    for(; !isdigit(ch); ch = getchar());
    for(; isdigit(ch); x = x * 10 + ch - '0', ch = getchar());
    return x;
}
void wt(__int128 x) {
    if(x >= 10) wt(x / 10);
    putchar(x % 10 + '0');
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    n = rd(), r = rd(), g = rd(), b = rd(), T = rd();
    for(int i = 1; i <= n; i ++) {
        for(int j = 0; j <= i; j ++) {
            for(int k = 0; k + j <= i; k ++) {
                int l = i - j - k;
                if(j) f[i & 1][j][k] = f[i - 1 & 1][j - 1][k] + 1ll * r * (T + b * l) + 1ll * g * k * (T + b * l);
                if(k) f[i & 1][j][k] = max(f[i & 1][j][k], f[i - 1 & 1][j][k - 1] + 1ll * g * (k - 1) * (T + b * l));
                if(l) f[i & 1][j][k] = max(f[i & 1][j][k], f[i - 1 & 1][j][k] + 1ll * g * k * (T + b * (l - 1)));
            }
        }
    }
    for(int j = 0; j <= n; j ++) {
        for(int k = 0; k + j <= n; k ++) {
            ans = max(ans, f[n & 1][j][k]);
        }
    }
    wt(ans);
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...