From 3a443519717e1946c4f93add7c8f3841f76bf99f Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Thu, 20 Nov 2025 11:59:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0P2943.cpp=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=92=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现动态规划算法计算最小平方和 --- src/11/19/P2943.cpp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/11/19/P2943.cpp diff --git a/src/11/19/P2943.cpp b/src/11/19/P2943.cpp new file mode 100644 index 0000000..e35ee2d --- /dev/null +++ b/src/11/19/P2943.cpp @@ -0,0 +1,32 @@ +#include +#include +#include +#include + +const int inf=1e9+7; +int n,m; +std::vector a,dp,s; + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>n>>m; + a.resize(n+1); + dp.resize(n+1,inf); + s.resize(m+1); + + for(int i=1;i<=n;i++)std::cin>>a[i]; + dp[0]=0; + for(int i=1;i<=n;i++){ + int size=0; + for(int j=i;j>=1&&size*size<=n;j--){ + if(s[a[j]]!=i){ + size++; + s[a[j]]=i; + } + dp[i]=std::min(dp[i],dp[j-1]+size*size); + } + } + std::cout<