1 solutions

  • 0
    @ 2024-12-19 11:07:50

    n3n^3

    破环成链,标准区间动态规划模型。

    【代码实现】

    #include<bits/stdc++.h>
    using namespace std;
    const int N=210;
    int f[N][N]; //f[i][j]表示表示w[i]到w[r]的标记合并成一颗珠子释放的能量
    int w[N]; //获取珠子标记
    int main()
    {
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;i++) //输入并扩展
    	{
    		cin>>w[i];
    		w[i+n]=w[i];
    	}
    	for(int len=3;len<=n+1;len++) //从小到大枚举区间长度(2颗珠子才能合并)
    	{
    		for(int l=1;l+len-1<=2*n;l++)//枚举左端点
    		{
    			int r=l+len-1;
    			for(int j=l+1;j<r;j++) //枚举中间点
    			{
    				f[l][r]=max(f[l][r],f[l][j]+f[j][r]+w[l]*w[j]*w[r]);
    			}
    		}
    	}
    	int res=0;
    	for(int i=1;i<=n;i++) //枚举合并成为的珠子后的头和尾
    	{
    		res=max(res,f[i][i+n]);
    	}
    	cout<<res;
    	return 0;
    }
    
    • 1

    Information

    ID
    450
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By