社区讨论

60求助

P1018[NOIP 2000 提高组] 乘积最大参与者 2已保存回复 2

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mhj1l5qc
此快照首次捕获于
2025/11/03 19:13
4 个月前
此快照最后确认于
2025/11/03 19:13
4 个月前
查看原帖
Subtask #0 7,8,9,10测试点全错
看了下题解感觉也没毛病啊
C
#include<iostream>
using namespace std;
long long n,k,a[45],f[45][45],g[45][45];
char c;
int main(){
    cin>>n>>k;
    for(long long i=1;i<=n;i++){
        cin>>c;
        a[i]=c-'0';
    }
    for(long long i=1;i<=n;i++){
        for(long long j=i;j<=n;j++){
            g[i][j]=g[i][j-1]*10+a[j];
        }
    }
    for(long long i=1;i<=n;i++){
        f[i][0]=g[1][i];
    }
    for(long long i=1;i<=n;i++){
        for(long long j=1;j<=k;j++){
            if(j>=i) break;
            for(long long x=j;x<i;x++){
                f[i][j]=max(f[i][j],f[x][j-1]*g[x+1][i]);
            }
        }
    }
    cout<<f[n][k];
    return 0;
}
```#include<iostream>
using namespace std;
long long n,k,a[45],f[45][45],g[45][45];
char c;
int main(){
    cin>>n>>k;
    for(long long i=1;i<=n;i++){
        cin>>c;
        a[i]=c-'0';
    }
    for(long long i=1;i<=n;i++){
        for(long long j=i;j<=n;j++){
            g[i][j]=g[i][j-1]*10+a[j];
        }
    }
    for(long long i=1;i<=n;i++){
        f[i][0]=g[1][i];
    }
    for(long long i=1;i<=n;i++){
        for(long long j=1;j<=k;j++){
            if(j>=i) break;
            for(long long x=j;x<i;x++){
                f[i][j]=max(f[i][j],f[x][j-1]*g[x+1][i]);
            }
        }
    }
    cout<<f[n][k];
    return 0;
}

回复

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

正在加载回复...