社区讨论
求助区间dp大佬
学术版参与者 5已保存回复 14
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @loc51nlv
- 此快照首次捕获于
- 2023/10/30 08:04 2 年前
- 此快照最后确认于
- 2023/11/04 14:14 2 年前
最近本蒟蒻刚学完区间dp,就自信地做了道黄题,结果——
回头一看,样例43 54
我的代码输出63 54......
于是呢,在此
本蒟蒻,郑重——
求助各位大佬帮忙
附本人代码——
CPP#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=201;
int main()
{ ll dp1[N][N],dp2[N][N],a[N],s[N];
ll n,xiao,da;
memset(dp1,0,sizeof(dp1));
memset(dp2,0x3f,sizeof(dp2));
cin>>n;
for(ll i=1;i<=2*n;i++)
{ if(i<=n)
{ cin>>a[i];
}
a[i+n]=a[i];
s[i]=s[i-1]+a[i];
}
xiao=0x3f;
da=0;
for(ll len=1;len<n;len++)
{ for(ll i=1,j=i+len;j<2*n&&i<2*n;i++,j=i+len)
{ for(ll k=i;k<j;k++)
{ dp1[i][j]=max(dp1[i][j],dp1[i][k]+dp1[k+1][j]+s[j]-s[i-1]);
dp2[i][j]=min(dp2[i][j],dp2[i][k]+dp2[k+1][j]+s[j]-s[i-1]);
}
}
}
xiao=0x3f;
for(ll i=1;i<=n;i++)
{ da=max(da,dp1[i][i+n-1]);
xiao=min(xiao,dp2[i][i+n-1]);
}
cout<<xiao<<endl<<da;
return 0;
}
回复
共 14 条回复,欢迎继续交流。
正在加载回复...