九度题库 (题目1462:两船载物问题)
来源:互联网 发布:云霄生活网络 编辑:程序博客网 时间:2024/06/06 03:07
原题地址
http://ac.jobdu.com/problem.php?pid=1462
附上启发我的大神作品
原题:
http://acm.hdu.edu.cn/showproblem.php?pid=1864
解析:
http://www.cnblogs.com/aiyite826/archive/2010/07/23/1783859.html
- 题目描述:
给定n个物品的重量和两艘载重量分别为c1和c2的船,问能否用这两艘船装下所有的物品。
- 输入:
输入包含多组测试数据,每组测试数据由若干行数据组成。
第一行为三个整数,n c1 c2,(1 <= n <= 100),(1<=c1,c2<=5000)。
接下去n行,每行一个整数,代表每个物品的重量(重量大小不大于100)。
- 输出:
对于每组测试数据,若只使用这两艘船可以装下所有的物品,输出YES。
否则输出NO。
- 样例输入:
3 5 86333 5 8534
- 样例输出:
NOYES
/**这次组织的考试算是被狂虐了,这题本来真是该会的,只是由于一直纠结于双塔问题,导致思路不通*/#include <stdio.h>#include <string.h>int list[101];int dp[5001];int main(){int n, c1, c2, sum, i;while(~scanf("%d%d%d", &n, &c1, &c2)){sum = 0;for(i = 1; i <= n; i++){scanf("%d", &list[i]);sum += list[i];}memset(dp, 0, sizeof(dp));//初始化dp = 0for(i = 1; i <= n; i++)for(int j = c1; j >= list[i]; j--)dp[j] = dp[j] >= dp[j - list[i]] + list[i] ? dp[j] : dp[j - list[i]] + list[i];//寻找在装在j,前i块重物中能容纳的最大,此处有点不容易理解puts(dp[c1] + c2 >= sum ? "YES" : "NO");}return 0;}
- 九度题库 (题目1462:两船载物问题)
- 九度题库 (题目1462:两船载物问题)
- 【九度】题目1007:奥运排序问题
- 【九度】题目1153:括号匹配问题
- 【九度】题目1006:ZOJ问题
- 九度:题目1554:区间问题
- 九度题目1153:括号匹配问题
- 九度OJ题目1554:区间问题
- 九度oj 题目1152 点菜问题
- 九度 题目1488:百万富翁问题
- 九度题目1153:括号匹配问题
- 九度题目 T1355 扑克牌问题
- 九度 题目1045:百鸡问题
- 九度 题目1006:ZOJ问题
- 九度 题目1007:奥运排序问题
- 【九度】题目1554:区间问题
- 九度oj 题目1104:整除问题
- 九度OJ 题目1006:ZOJ问题
- 策略模式C语言实现
- 关于提示”XML 文档只能有一个顶层元素“问题的解决方法备忘
- VIM 简易教程(4)
- 求32位int二进制下最左边的bit '1'
- 一些有用的js正则验证(是否为空,是否为正整数,email,手机,电话,身份证)
- 九度题库 (题目1462:两船载物问题)
- Linux命令行 基本命令应用
- socket头文件
- Linux so 选择顺序
- MySql与SqlServer的一些常用用法的差别
- NSArray使用小结
- 快速排序算法实现
- 从下拉菜单设计细节看Amazon对用户体验的把握
- java之单例设计模式,继承,final关键字总结