diff --git a/src/8/30/P1063.cpp b/src/8/30/P1063.cpp new file mode 100644 index 0000000..f001f25 --- /dev/null +++ b/src/8/30/P1063.cpp @@ -0,0 +1,56 @@ +/* + +dp[i][j]=将[1,j]合并为一堆时的最大总能量 +dp[i][j]=max( + dp[i][j], + dp[i][k]+dp[k+1][j]+i.m*k.n*j.n +) + +dp[i][j]=0 + +*/ +#include +#include +#include +#include +#include +using ll = int64_t; + +#define pvp(v)do{\ + std::cout<<#v<<":\n";\ + for(const auto&i:(v)){\ + std::cout<>n; + std::vector h(2*n+1); + std::vector> dp(2*n+1,std::vector(2*n+1)); + + for(ll i=1;i<=n;++i){ + std::cin>>h[i]; + h[n+i]=h[i]; + } + // pvp(v); + for(ll len=2;len<=n;++len){ + for(ll i=1;i<=2*n-len;++i){ + ll j=i+len-1; + for(ll k=i;k