From f8f53e255dd25e685e61673680bffdb9bd38f323 Mon Sep 17 00:00:00 2001 From: Zengtudor Date: Sat, 6 Sep 2025 17:09:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0P1616=E5=92=8CP5020?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现动态规划解法,分别解决背包问题和货币系统问题 --- src/9/6/P1616.cpp | 24 ++++++++++++++++++++++++ src/9/6/P5020.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/9/6/P1616.cpp create mode 100644 src/9/6/P5020.cpp diff --git a/src/9/6/P1616.cpp b/src/9/6/P1616.cpp new file mode 100644 index 0000000..cbe01e9 --- /dev/null +++ b/src/9/6/P1616.cpp @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include + +using ll = int64_t; + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + ll t,m; + std::cin>>t>>m; + std::vector dp(t+1); + for(ll i=1;i<=m;i++){ + ll w,v; + std::cin>>w>>v; + for(ll j=w;j<=t;j++){ + dp[j]=std::max(dp[j],dp[j-w]+v); + } + } + std::cout< +#include +#include +#include +#include +using ll = int64_t; + +ll t; + +int main(){ + std::iostream::sync_with_stdio(false); + std::cin.tie(nullptr); + + std::cin>>t; + std::vector a; + std::vector dp; + while(t--){ + ll n; + std::cin>>n; + ll ans=n; + a.clear(); + dp.clear(); + a.resize(n+1); + + + for(ll i=1;i<=n;i++){ + std::cin>>a[i]; + } + std::sort(a.begin()+1,a.begin()+1+n); + dp.resize(a[n]+1); + dp[0]=true; + for(ll i=1;i<=n;i++){ + if(dp[a[i]]){ + ans--; + continue; + } + for(ll j=a[i];j<=a[n];j++){ + dp[j]=dp[j]|dp[j-a[i]]; + } + } + std::cout<