社区讨论

为什么只有90分

P1544三倍经验参与者 2已保存回复 1

讨论操作

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

当前回复
1 条
当前快照
1 份
快照标识符
@mhjo31ke
此快照首次捕获于
2025/11/04 05:43
4 个月前
此快照最后确认于
2025/11/04 05:43
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int main(){
    long long int n,k,a[105][105]={0};
    cin>>n>>k;
    long long int dp[105][105][105]={0};
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            cin>>a[i][j];
        }
    }
    for(int i=n;i>=1;i--){
        for(int j=1;j<=i;j++){
            for(int l=0;l<=k&&l<=n-i+1;l++){
                if(l==0){
                    dp[i][j][l]=max(dp[i+1][j][l],dp[i+1][j+1][l])+a[i][j];
                }
                else{
    dp[i][j][l]=max(dp[i+1][j][l],dp[i+1][j+1][l])+a[i][j];
    dp[i][j][l]=max(dp[i][j][l],max(dp[i+1][j+1][l-1],dp[i+1][j][l-1])+3*a[i][j]);
                }
            }
        }
    }
    long long int m=0;
    for(int i=0;i<=min(k,n);i++){
    m=max(m,dp[1][1][i]);
    }
    cout<<m;
    return 0;
}

回复

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

正在加载回复...