比赛 五一大礼包 评测结果 AAEEEEEEEEAAAAAAAA
题目名称 Ave Mujica 最终得分 58
用户昵称 彭欣越 运行时间 5.738 s
代码语言 C++ 内存使用 12.58 MiB
提交时间 2026-05-04 12:10:35
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;
int n,t;
ll a[N],b[N],dp[2][1010][1010];
int main () {
    freopen("Mujica.in","r",stdin);
    freopen("Mujica.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin >> n >> t;
    for (int i=1;i<=n;i++) cin >> a[i];
    for (int i=1;i<=n;i++) cin >> b[i];
    for (int j=0;j<=t;j++) {
        for (int k=0;k<=j;k++) {
            dp[0][j][k]=1e18;
        }
    }
    dp[0][0][0]=0;
    for (int i=1;i<=n;i++) {
        //cout << (i&1) <<endl; 
        for (int j=0;j<=t;j++) {
            for (int k=0;k<=j;k++) {
                dp[i&1][j][k]=1e18;
            }
        }
        for (int j=0;j<=t;j++) {
            for (int k=0;k<=j;k++) {
                dp[i&1][j][k]=dp[(i-1)&1][j][k];
                //cout << i <<' '<< j <<' '<< k <<' '<< dp[i&1][j][k] <<endl; 
                if (k>0) dp[i&1][j][k]=min(dp[i&1][j][k],dp[(i-1)&1][j][k-1]+b[i]);
                //cout << i <<' '<< j <<' '<< k <<' '<< dp[i&1][j][k] <<endl; 
                if (j>0&&j!=k) dp[i&1][j][k]=min(dp[i&1][j][k],dp[(i-1)&1][j-1][k]+a[i]);
                //cout << i <<' '<< j <<' '<< k <<' '<< dp[i&1][j][k] <<endl; 
                if (j>0&&k>0) dp[i&1][j][k]=min(dp[i&1][j][k],dp[(i-1)&1][j-1][k-1]+a[i]+b[i]);
                //cout << i <<' '<< j <<' '<< k <<' '<< dp[i&1][j][k] <<endl; 
            }
        }
    }
    cout << dp[n&1][t][t] <<endl;
    return 0;
}