// 在一个圆形操场的四周摆放 N 堆石子,现要将石子有次序地合并成一堆,规定每次只能选相邻的 2 堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。

#include<iostream>
#include<cstring>
using namespace std;
const int N=500+5;
int s[N];
int Max[N][N];
int Min[N][N];
int MAX=-1;
int MIN=1e9;
int main(){
    int n;
    cin>>n;
    memset(Max,-0x3f,sizeof(Max));
    memset(Min,0x3f,sizeof(Min));
    for(int i=1;i<=n;i++){
        cin>>s[i];
        s[i+n]=s[i];
        Max[i][i]=0;
        Max[i+n][i+n]=0;
        Min[i][i]=0;
        Min[i+n][i+n]=0;
    }
    for(int i=1;i<=2*n;i++)s[i]+=s[i-1];
    for(int i=1;i<=n;i++){
        for(int len=2;len<=n;len++){
            for(int l=i;l+len-1<=n+i-1;l++){
                int r=l+len-1;
                for(int k=l;k<r;k++){
                    Max[l][r]=max(Max[l][r],Max[l][k]+Max[k+1][r]+s[r]-s[l-1]);
                    Min[l][r]=min(Min[l][r],Min[l][k]+Min[k+1][r]+s[r]-s[l-1]);
                }
               
            }
        }
        MAX=max(MAX,Max[i][n+i-1]);
        MIN=min(MIN,Min[i][n+i-1]);
    }
    cout<<MIN<<endl<<MAX;
    return 0;
}

// 给定非负整数 n,求 2  n   的值。

#include <bits/stdc++.h>
using namespace std;
int main() {
long long n;
cin>>n;
int t=1;
for(int i=1;i<=n;i++){
t*=2;
}
cout<<t;
return 0;
}
```
全部评论

相关推荐

11-03 12:40
中山大学 Java
勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务