数据太水 求hack
  • 板块P2029 跳舞
  • 楼主__zhangyx__
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/19 12:38
  • 上次更新2023/11/19 14:59:28
查看原帖
数据太水 求hack
622371
__zhangyx__楼主2023/11/19 12:38
#include<bits/stdc++.h>

using namespace std;

#define int long long
typedef pair<int,int> PII;

const int N = 1e6;
const int INF = 0x7f7f7f7f;
int n,t;
int s[N + 5],b[N + 5];
int dp[5100][5100];
int sum[N + 5];

void solve() {
    cin >> n >> t;
    for (int i = 1;i <= n;i ++) cin >> s[i],sum[i] = sum[i - 1] + s[i];
    for (int i = 1;i <= n;i ++) cin >> b[i];
    
    if (t != 1) dp[1][1] = s[1];
    else dp[1][1] = s[1] + b[1];
    
    for (int i = 2;i <= n;i ++) {
        for (int j = 0;j <= min(i,t);j ++) {
            dp[i][j] = max(dp[i][j],dp[i - 1][j] - s[i]);
            if (j == t) dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + s[i] + b[i]);
            else if (j == 1) {
                if (i - 1 >= t) dp[i][j] = max(dp[i][j],dp[i - 1][t] + s[i]);
                else dp[i][j] = s[i] - s[i - 1];
            }
            else dp[i][j] = max(dp[i][j],dp[i - 1][j - 1] + s[i]);
        }
    }
    //cout << dp[2][1] << endl;
    int ans = -1;
    for (int i = 0;i <= t;i ++) ans = max(ans,dp[n][i]); 
    cout << ans << endl;
} 
 
signed main() {
    std::ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
    int T = 1;//cin >> T;
    while (T --) solve();
}
2023/11/19 12:38
加载中...