传送门:http://poj.org/problem?id=3628

题目看了老半天,牛来叠罗汉- -|||和书架什么关系啊。。

大意是:一群牛来叠罗汉,求超过书架的最小高度。

0-1背包的问题,对于第i只牛可以放或者不放。然后最后求出大于书架高度的,减去书架高度即可。

也可以倒着来看。背包的容量为牛总的高度-书架的高度,求不超过这个容量的最大值,最后容量-这个值就是答案了。(推荐)

还可以DFS..

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=1000000+5;
int H[22],f[MAXN];
int main()
{
int N,B;
while(~scanf("%d%d",&N,&B))
{
memset(f,0,sizeof(f));
int sum=0;
for(int i=1;i<=N;i++)
{
scanf("%d",&H[i]);
sum+=H[i];
} for(int i=1;i<=N;i++)
{
for(int j=sum;j>=H[i];j--)
{
f[j]=max( f[j] , f[j-H[i]]+H[i] );
}
} for(int i=B;i<=sum;i++)
if(f[i]==i)
{
printf("%d\n",f[i]-B);
break;
} }
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=1000000+5;
int H[22],f[MAXN];
int main()
{
int N,B;
while(~scanf("%d%d",&N,&B))
{
memset(f,0,sizeof(f));
int sum=0;
for(int i=1;i<=N;i++)
{
scanf("%d",&H[i]);
sum+=H[i];
} int contain=sum-B; for(int i=1;i<=N;i++)
{
for(int j=contain;j>=H[i];j--)
{
f[j]=max( f[j] , f[j-H[i]]+H[i] );
}
} printf("%d\n",contain-f[contain]); }
}

DFS:

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=9999999;
int H[22];
bool visit[22]={0};
int N,B;
int ans;
void dfs(int cur , int sum)
{
if(sum >=ans)
return; if(cur==N)
{
if(sum>=B)
ans=sum;
return;
} dfs(cur+1,sum);
dfs(cur+1,sum+H[cur]);
}
int main()
{ while(~scanf("%d%d",&N,&B))
{
ans=INF;
for(int i=0;i<N;i++)
scanf("%d",&H[i]); dfs(0,0);
printf("%d\n",ans-B); }
}

POJ 3628 Bookshelf 2 0-1背包的更多相关文章

  1. POJ 3628 Bookshelf 2(01背包)

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9488   Accepted: 4311 Descr ...

  2. POJ 3628 Bookshelf 2【01背包】

    题意:给出n头牛的身高,以及一个书架的高度,问怎样选取牛,使得它们的高的和超过书架的高度最小. 将背包容量转化为所有牛的身高之和,就可以用01背包来做=== #include<iostream& ...

  3. poj 3628 Bookshelf 2 基本01背包

    题目大意:FJ有n头奶牛,和一个高为h的架子,给出每头奶牛高度,求使奶牛叠加起来超过架子的最低高度是多少. 题目思路:求出奶牛叠加能达到的所有高度,并用dp[]保存,最后进行遍历,找出与h差最小的dp ...

  4. POJ 3628 Bookshelf 2 (01背包)

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7496   Accepted: 3451 Descr ...

  5. POJ 3628 Bookshelf 2【背包型DFS/选or不选】

    Bookshelf 2 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11105   Accepted: 4928 Desc ...

  6. poj 3628 Bookshelf 2

    http://poj.org/problem?id=3628 01背包 #include <cstdio> #include <iostream> #include <c ...

  7. POJ 3628 Bookshelf 2 题解

    本题解法非常多,由于给出的数据特殊性故此能够使用DFS和BFS,也能够使用01背包DP思想来解. 由于一般大家都使用DFS,这里使用非常少人使用的BFS.缺点是比DFS更加耗内存,只是长处是速度比DF ...

  8. poj 1837 Balance (0 1 背包)

    Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10326   Accepted: 6393 题意:给你n个挂 ...

  9. POJ 1636 Prison rearrangement DFS+0/1背包

    题目链接: id=1636">POJ 1636 Prison rearrangement Prison rearrangement Time Limit: 3000MS   Memor ...

随机推荐

  1. ocdefirst安装更新数据库

    数据迁移(Migrations) 启用数据迁移在控制台中输入如下命令:Enable-Migrations 这时会在项目目录中增加一个Migrations文件夹,里面放置了两个文件:EF会通过C#代码的 ...

  2. ajax关于主流中的异类:应对Opera(四)

    修改示例以支持Opera <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...

  3. C/C++(函数)

    函数 函数三要素:函数名,参数,返回值 重点研究函数的输入输出 随机数函数 //产生一组随机数 #include<stdio.h> #include<stdlib.h> #in ...

  4. xsy3320 string

    xsy3320 string 题意: ​ 给一颗树,每条边上有一个字符,求有多少条路径是回文的.(\(N\leq50000\),\(c\in\{1,2\}\)) 题解: ​ 前置芝士:回文前缀& ...

  5. chage---修改帐号和密码的有效期限

    chage命令   chage命令是用来修改帐号和密码的有效期限. 语法 chage [选项] 用户名 选项 -m:密码可更改的最小天数.为零时代表任何时候都可以更改密码. -M:密码保持有效的最大天 ...

  6. 【重构】C# VS 配置引用程序集的路径(分离exe和dll从指定路径调用)

    原文:[重构]C# VS 配置引用程序集的路径(分离exe和dll从指定路径调用) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CocoWu892 ...

  7. CSUOJ 1554 SG Value

    1554: SG Value Time Limit: 5 Sec  Memory Limit: 256 MBSubmit: 140  Solved: 35 Description The SG val ...

  8. ANSI-X99MAC算法和PBOC的3DES MAC算法

    仅仅要有标准的DES加密和解密算法.类似ANSI-X99MAC算法和PBOC3DES算法就非常好实现.他们都是用DES算法再经过一层算法实现的.实现原理看图就能看明确.3DES算法实现就更简单了.就是 ...

  9. 优化HTML代码的多种技巧

    怎样提升Web页面的性能,非常多开发者从多个方面来下手如JavaScript.图像优化.server配置,文件压缩或是调整CSS. 非常显然HTML 已经达到了一个瓶颈.虽然它是开发Web 界面必备的 ...

  10. Flume的可靠性

    Flume的可靠性 当节点出现故障时,日志能够被传送到其他节点上而不会丢失. Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to- end(收到数据agent首先将event写到磁 ...