LuoguP1063 能量项链【区间Dp】
前天测试考了QAQ。这么经典的区间dp不再开一文好像有点可惜。
内容是从模拟赛结题报告中copy来的。QAQ
noip能量项链原题。
https://www.luogu.org/problemnew/show/P1063
Chemist没有做过能在考场上1A,%一%!!!
加强了对区间dp的理解!
一般地,我们在求解区间型动态规划时,会把一个个区间作为各个阶段。
一般地,需要用到三层循环进行枚举,外层为区间长度,其次为端点,最内层为断点。
另外,本题还需要断环成链,开long long。
code
1 #include<cstdio> 2 #include<algorithm> 3 4 using namespace std; 5 typedef long long ll; 6 7 int n; 8 ll a[1000]; 9 ll ans,f[1000][1000]; 10 11 int main() 12 { 13 scanf("%d",&n); 14 for(int i=1;i<=n;i++) 15 { 16 scanf("%d",&a[i]); 17 a[i+n]=a[i]; 18 } 19 for(int len=2;len<=n+1;len++) 20 for(int i=1;i+len-1<=2*n;i++) 21 { 22 int j=i+len-1; 23 for(int k=i+1;k<=j-1;k++) 24 f[i][j]=max(f[i][j],f[i][k]+f[k][j]+a[i]*a[k]*a[j]),ans=max(ans,f[i][j]); 25 } 26 printf("%lld",ans); 27 //fclose(stdin); 28 //fclose 29 return 0; 30 }
独立意志与自由思想是必须争的,且须以生死力争。