From db685782e14ebcacf73cb9515a0b564ad3343c49 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sat, 30 Aug 2025 12:13:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=A7=84=E5=88=92=E8=A7=A3=E5=86=B3=E8=83=BD=E9=87=8F=E9=A1=B9?= =?UTF-8?q?=E9=93=BE=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现动态规划算法计算将能量项链合并为一堆时的最大总能量。使用二维数组存储中间结果,通过三重循环计算所有可能的合并方式,最终输出最大能量值。 --- src/8/30/P1063.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/8/30/P1063.cpp 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