啊啊啊啊

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 #define MAX 0x3f
 5 int f[2005][2005];
 6 int g[2005][2005];
 7 int a[2005],sum[2005];
 8 
 9 int main()
10 {
11     memset(f,MAX,sizeof(f));
12     memset(g,0,sizeof(g));//why0?? 
13     int n;
14     cin>>n;
15     for(int i=1;i<=n;i++)
16     {
17         cin>>a[i];
18         a[i+n]=a[i];
19     }
20     for(int i=1;i<2*n;i++)
21         sum[i]=sum[i-1]+a[i];
22     for(int i=1;i<2*n;i++)
23         f[i][i]=0;//!!!对角线初始化,保证第一次选择选到0 
24 
25     for(int i=2*n;i>=1;i--)//阶段
26         for(int j=i+1;j<=2*n-1;j++)//状态 
27         {
28             for(int k=i;k<j;k++)//决策 
29                 f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]-sum[i-1]),
30                 g[i][j]=max(g[i][j],g[i][k]+g[k+1][j]+sum[j]-sum[i-1]);
31         }
32     int ans1=f[1][n],ans2=g[1][n];
33     for(int i=1;i<=n;i++)
34         ans1=min(ans1,f[i][i+n-1]),
35         ans2=max(ans2,g[i][i+n-1]);
36     cout<<ans1<<endl<<ans2<<endl;
37     return 0;
38 }

 

posted @ 2022-09-24 16:16  要不要吃哈密瓜  阅读(449)  评论(0编辑  收藏  举报