生活随笔
收集整理的這篇文章主要介紹了
【luogu】 P1880 石子合并
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原題原題原題原題原題
先貼上錯誤代碼。。。
↓錯誤代碼↓
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[
1100][
1100],f2[
1100][
1100],st[
1100],a[
1100];
int main()
{
memset(f,
127,
sizeof(f));
int n;
cin>>n;
for(
int i=
1;i<=n;i++){
cin>>a[i];a[i+n]=a[i];st[i]=st[i-
1]+a[i];}
for(
int i=n+
1;i<=
2*n;i++)st[i]=st[i-
1]+a[i];
for(
int i=
1;i<=n+n;i++)f[i][i]=
0,f2[i][i]=
0;
for(
int l=
1;l<=n;l++)
for(
int i=
1;l+i<=n+n;i++){
int j=i+
1;
for(
int k=i;k<=j-
1;k++){f2[i][j]=max(f2[i][j],f2[i][k]+f2[k+
1][j]+st[j]-st[i-
1]);f[i][j]=min(f[i][j],f[i][k]+f[k+
1][j]+st[j]-st[i-
1]);}}
int maxn=f2[
1][n];
int minn=f[
1][n];
for(
int i=
1;i<=n;i++){maxn=max(minn,f2[i][i+n-
1]); minn=min(minn,f[i][i+n-
1]);}
cout<<minn<<endl<<maxn;
return 0;
}
↑錯誤代碼↑
錯誤原因已經注釋了,40分
———————————————————分—————割—————線—————————————————————
經過一番檢查,發現了這些智障錯誤,感到自己都驚呆了
↓正確代碼↓
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[
1100][
1100],f2[
1100][
1100],st[
1100],a[
1100];
int main()
{
memset(f,
127,
sizeof(f));
int n;
cin>>n;
for(
int i=
1;i<=n;i++){
cin>>a[i];a[i+n]=a[i];st[i]=st[i-
1]+a[i];}
for(
int i=n+
1;i<=
2*n;i++)st[i]=st[i-
1]+a[i];
for(
int i=
1;i<=n+n;i++)f[i][i]=
0,f2[i][i]=
0;
for(
int l=
1;l<=n;l++)
for(
int i=
1;l+i<=n+n;i++){
int j=i+l;
for(
int k=i;k<=j-
1;k++){f2[i][j]=max(f2[i][j],f2[i][k]+f2[k+
1][j]+st[j]-st[i-
1]);f[i][j]=min(f[i][j],f[i][k]+f[k+
1][j]+st[j]-st[i-
1]);}}
int maxn=f2[
1][n];
int minn=f[
1][n];
for(
int i=
1;i<=n;i++){maxn=max(maxn,f2[i][i+n-
1]);minn=min(minn,f[i][i+n-
1]);}
cout<<minn<<endl<<maxn;
return 0;
}
↑正確代碼↑
滿分
?
轉載于:https://www.cnblogs.com/oiersyp/p/6241634.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的【luogu】 P1880 石子合并的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。