求调91分
  • 板块学术版
  • 楼主All_In_Atom
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/22 21:37
  • 上次更新2024/6/23 09:06:21
查看原帖
求调91分
1042481
All_In_Atom楼主2024/6/22 21:37

P1388

#include<bits/stdc++.h>
#define cul(a,b,c) (c==1)?(a+b):(a*b)
using namespace std;
int n,k,f[15][15],a[15],s[15],point[15];
int cnt=0;
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(cnt+1<=n-k-1&&cnt+1<n)point[++cnt]=1;
        else if(cnt+1<n) point[++cnt]=2;
    }
    int ans=0;
    do{
        for(int i=1;i<=n;i++) f[i][i]=a[i];
        for(int len=1;len<=n;len++){
            for(int l=1;l+len-1<=n;l++){
                int r=l+len-1;
                for(int k=l;k<r;k++){
                    f[l][r]=max(f[l][r],cul(f[l][k],f[k+1][r],point[k]));
                }
            }
        }
        ans=max(ans,f[1][n]);
        // cout<<ans<<" ";
        memset(f,0,sizeof f);
    }while(next_permutation(point+1,point+n));
    cout<<ans;
    return 0;
}
2024/6/22 21:37
加载中...