博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HackerRank "The Indian Job"
阅读量:5270 次
发布时间:2019-06-14

本文共 1008 字,大约阅读时间需要 3 分钟。

A sly knapsack problem in disguise! Thanks to 

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 
#include
#include
#include
#include
using namespace std;int knapsack(vector
&A, int G){ int n = A.size(); vector
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
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;}

转载于:https://www.cnblogs.com/tonix/p/4996541.html

你可能感兴趣的文章
JavaWeb之Jsp/EL(八)
查看>>
AVPlayerDemo(视频播放器)
查看>>
连续替换转移字符
查看>>
opencv获取图像像素值的两种方法
查看>>
集合的线程安全
查看>>
java Callable接口线程返回参数
查看>>
js红包算法【转载】
查看>>
标题编辑 AndroidTagGroup
查看>>
Intent之Action
查看>>
函数参数个数不确定时使用va_start
查看>>
QT基本操作
查看>>
课后作业-阅读任务-阅读笔记-3
查看>>
喜欢种种“开放平台”
查看>>
6.00.1x Introduction to computation
查看>>
阅读《名师讲坛--Android开发实战经典》
查看>>
php rsa加密解密实例
查看>>
【转】用perl写的单位电脑信息采集程序
查看>>
mysql install
查看>>
typescript - 9.装饰器
查看>>
西北大学2019春季校赛填坑笔记
查看>>