luoguP1441 砝码称重
Posted dream-runner
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luoguP1441 砝码称重相关的知识,希望对你有一定的参考价值。
很水。。。dfs+dp(傻逼dp)
#include<bits/stdc++.h> using namespace std; const int maxn=25; int a[maxn],n,m,ans=0; bool book[maxn],f[maxn*100]; void dfs(int s,int t){ if(t==m+1){ memset(f,0,sizeof(f)); int len=0; for(int i=1;i<=n;++i)if(!book[i])len+=a[i]; f[0]=1; for(int i=1;i<=n;++i){ if(book[i])continue; for(int j=len;j>=a[i];--j){ f[j]=(f[j]||f[j-a[i]]); } } int re=0; for(int i=1;i<=len;++i){ if(f[i])++re; } ans=max(ans,re); return ; } if(s>n)return ; for(int i=s;i<=n;++i){ book[i]=1; dfs(i+1,t+1); book[i]=0; } } int main(){ cin>>n>>m; for(int i=1;i<=n;++i)cin>>a[i]; dfs(1,1); cout<<ans; return 0; }
以上是关于luoguP1441 砝码称重的主要内容,如果未能解决你的问题,请参考以下文章