luogu1441砝码称重(深搜+背包:组合数+01背包)
2018-04-02 15:35
211 查看
题目连接
#同类的题目还有这些#
题目大意:
n个砝码选其中m个,求他们能组合出来的重量最多。
解题思路(简单粗暴):
1 n个砝码选m个,吃果果的组合数,dfs搞起来
2 问m个砝码能组合出来的重量:01背包。
游戏结束(PS:深搜的参数意义,一定要搞懂,我WA了3次):#include<cstdio>
#include<cstring>
int n,m,b[110],a[110],f[20010],mx=0,ans=0;
void dp()
{
memset(f,-1,sizeof(f));f[0]=1;
int su=0;
for(int i=1;i<=n;i++)
{
if(b[i]==0) continue;
int t=a[i];
for(int j=mx;j>=t;j--)
{
if(f[j-t]==1&&f[j]==-1)//第一次出现的格子,记录次数
{
su++;f[j]=1;
}
}
}
if(ans<su) ans=su;
}
void dfs(int x,int k) //当前是 x 个,选了 k 个
{
if(k==m)//选够了,去跑01背包
{
dp(); return ;
}
if(x>n) return ;
dfs(x+1,k);//不选当前点,直接去下一层
b[x]=1;//选当前点
dfs(x+1,k+1);
b[x]=0;
}
int main()
{
scanf("%d %d",&n,&m); m=n-m;
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++) { scanf("%d",&a[i]); mx+=a[i]; }
dfs(1,0);
printf("%d",ans);
return 0;
}
#同类的题目还有这些#
题目大意:
n个砝码选其中m个,求他们能组合出来的重量最多。
解题思路(简单粗暴):
1 n个砝码选m个,吃果果的组合数,dfs搞起来
2 问m个砝码能组合出来的重量:01背包。
游戏结束(PS:深搜的参数意义,一定要搞懂,我WA了3次):#include<cstdio>
#include<cstring>
int n,m,b[110],a[110],f[20010],mx=0,ans=0;
void dp()
{
memset(f,-1,sizeof(f));f[0]=1;
int su=0;
for(int i=1;i<=n;i++)
{
if(b[i]==0) continue;
int t=a[i];
for(int j=mx;j>=t;j--)
{
if(f[j-t]==1&&f[j]==-1)//第一次出现的格子,记录次数
{
su++;f[j]=1;
}
}
}
if(ans<su) ans=su;
}
void dfs(int x,int k) //当前是 x 个,选了 k 个
{
if(k==m)//选够了,去跑01背包
{
dp(); return ;
}
if(x>n) return ;
dfs(x+1,k);//不选当前点,直接去下一层
b[x]=1;//选当前点
dfs(x+1,k+1);
b[x]=0;
}
int main()
{
scanf("%d %d",&n,&m); m=n-m;
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++) { scanf("%d",&a[i]); mx+=a[i]; }
dfs(1,0);
printf("%d",ans);
return 0;
}
相关文章推荐
- 洛谷P2347 砝码称重 [2017年4月计划 动态规划01]
- 树形DP(01组合背包The Ghost Blows Light HDU4276)
- 洛谷 1441 砝码称重 搜索+DP 解题报告
- luoguP1441 【砝码称重】
- LuoguP1441 砝码称重 解题报告【搜索+背包型DP】
- 【OJ8756】砝码称重V2,可达性多重背包
- NOI题库--砝码称重V2(多重背包2^n拆分)
- 动态规划——背包系列之砝码称重
- noip1996 砝码称重 - 提高组 (多重背包)
- 【51Nod】1268 - 和为K的组合(01背包 || bfs)
- NOI题库--砝码称重V2(多重背包2^n拆分)
- 洛谷Oj-P2347 砝码称重-Bitset/多重背包
- 砝码称重 5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
- NOI-砝码称重v2 多重背包 生成函数
- 砝码称重--多重背包
- 动态规划7:砝码和种类优化成01背包问题
- 树形DP(01组合背包The Ghost Blows Light HDU4276)
- hdu2602(01背包基础)
- HDU 1203 01背包
- hdoj 1203 I NEED A OFFER! 【01-背包】