POJ 3628 Bookshelf 2
来源:互联网 发布:淘宝类的app难做么 编辑:程序博客网 时间:2024/06/18 16:31
题目链接:http://poj.org/problem?id=3628
题目大意:给出n和b,然后给出n个数,用这n个数中的某些,求出一个和,这个和是>=b的最小值,输出最小值与b的差。
解题思路:
1、dfs,2^20次方
2、dp,状态方程dp[j] |= dp[j-h[i]],如果dp[j-h[i]]能够凑出来,那么dp[j]也可以凑出来,最后扫一遍找到第一个dp[j]为true的值
ps:这个题的N和最大Sum都很大,dp不如枚举,如果后台数据量大dp肯定过不了2333……
import java.util.Scanner;/** * Created by sdust on 2017/5/11. */public class Main { public static void main(String[] args) { int n, b; Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); b = scanner.nextInt(); int h[] = new int[n+5]; int sum = 0; for(int i = 0; i < n; ++i) { h[i] = scanner.nextInt(); sum += h[i]; } boolean f[] = new boolean[sum + 5]; int flag = 0; f[0] = true; for(int i = 0; i < n; ++i) { for(int j = sum; j >= h[i]; --j) { f[j] |= f[j-h[i]] ; } } for(int i = b; i <= sum; ++i) { if(f[i]) { System.out.println(i - b); break; } } }}
0 0
- POJ 3628 - Bookshelf 2
- POJ 3628 - Bookshelf 2
- POJ 3628 Bookshelf 2
- poj-3628-Bookshelf 2
- poj 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- poj 3628 Bookshelf 2
- POJ 3628-Bookshelf 2
- POJ - 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- poj 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- POJ 3628 Bookshelf 2
- POJ 3628 Bookshelf 2(背包)
- POJ 3628 Bookshelf 2 题解
- poj 3628 Bookshelf 2 背包
- POJ 3628 Bookshelf 2 G++
- butterknife的使用
- iOS HTTPS适配
- HDU- 1151 Air Raid(最小路径覆盖)
- 第三天 ado.net
- vim搜索设置高亮
- POJ 3628 Bookshelf 2
- ElasticSearch5.3的 head插件启动与关闭
- dubbox文档
- Dynamic CRM 之查询
- QT 开发环境的搭建2(用自己的QT程序取代arm板上的QT程序)
- 搭建shadowsocks的代理服务器
- 定长分割字符串
- 开源 java CMS
- 工作:Android开发工程师(高级)