HackerRank "The Indian Job"
2015-11-26 08:44
423 查看
A sly knapsack problem in disguise! Thanks to https://github.com/bhajunsingh/programming-challanges/tree/master/hackerrank/algorithms/the-indian-job
Lesson learnt: The Italian\Indian job is two-way 01 Knapsack. And some complext problem can be converted to a simpler one.
Code is amazingly simple:
Lesson learnt: The Italian\Indian job is two-way 01 Knapsack. And some complext problem can be converted to a simpler one.
Code is amazingly simple:
#include <cmath> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; int knapsack(vector<int> &A, int G) { int n = A.size(); vector<int> dp(G + 1); for(int i =1; i <= n; i ++) for(int v =G; v >= A[i - 1]; v --) dp[v] = max(dp[v], dp[v- A[i - 1]]+ A[i- 1]); return dp[G]; } int main() { int T; cin >> T; while(T--) { // Get input int N, G; cin >> N >> G; vector<int> A(N); int total = 0; for(int i = 0; i < N; i++) { cin >> A[i]; total += A[i]; } // if(total > 2 * G) cout << "NO" << endl; else cout << ((total - knapsack(A, G) <= G) ? "YES" : "NO") << endl; } return 0; }
相关文章推荐
- Hive UDF开发
- jQuery-easyui中的combobox如何动态获取下拉框内容
- Zstack中使用串口
- Flex4 flash builder保留MXML转换的AS代码
- hdu 5294 Tricks Device spfa+网络流
- 使用Buildroot与Qemu学习ARM linux IIC驱动
- JavaScript学习(5.1):表达式语句、符合语句和空语句
- 普通排序--插入排序
- watchOS 2 教程(三):动画
- Android之PinnedHeaderExpandableListView- 仿ios的UITableView的header置顶效果
- STM32F407 之 高级定时器功能描述
- [Windows Server 2008] 安装网站伪静态
- Android 四大组件之BroadCastReceiver
- [转载]关于typedef的用法总结
- 解决jquery操作checkbox全选全不选无法勾选问题
- iOS 类的继承图
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools
- python 导入模块出错
- Scala 的 yield 例子 (for 循环和 yield 的例子)
- 人生路上,不把见闻收获记录下来,最终会留下遗憾