1127 - Funny Knapsack
Time Limit: 2 second(s) Memory Limit: 32 MB

Given n integers and a knapsack of weight W, you have to count the number of combinations for which you can add the items in the knapsack without overflowing the weight.

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case contains two integers n (1 ≤ n ≤ 30) and W (1 ≤ W ≤ 2 * 109) and the next line will contain n integers separated by spaces. The integers will be non negative and less than 109.

Output

For each set of input, print the case number and the number of possible combinations.

Sample Input

Output for Sample Input

3

1 1

1

1 1

2

3 10

1 2 4

Case 1: 2

Case 2: 1

Case 3: 8

思路:一个超大背包问题,用折半枚举然后二分查找;

 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stack>
7 #include<set>
8 #include<math.h>
9 using namespace std;
10 typedef long long LL;
11 LL ans[100];
12 LL ak1[40000];
13 LL ak2[40000];
14 LL bk1[50];
15 LL bk2[50];
16 int main(void)
17 {
18 int i,j,k;
19 scanf("%d",&k);
20 int s;
21 int n;
22 LL m;
23 for(s=1; s<=k; s++)
24 {
25 scanf("%d %lld",&n,&m);
26 for(i=0; i<n; i++)
27 {
28 scanf("%lld",&ans[i]);
29 }
30 for(i=0; i<(n/2); i++)
31 {
32 bk1[i]=ans[i];
33 }
34 for(j=0; i<n; j++,i++)
35 {
36 bk2[j]=ans[i];
37 }
38 int n1=(n/2);
39 int n2=n-n1;
40 for(i=0; i<=(1<<n1)-1; i++)
41 {
42 LL sum=0;
43 for(j=0; j<n1; j++)
44 {
45 if(i&(1<<j))
46 {
47 sum+=bk1[j];
48 }
49 }
50 ak1[i]=sum;
51 }
52 int num=(1<<n2)-1;
53 for(i=0; i<=(1<<n2)-1; i++)
54 {
55 LL sum=0;
56 for(j=0; j<n2; j++)
57 {
58 if(i&(1<<j))
59 sum+=bk2[j];
60 }
61 ak2[i]=sum;
62 }
63 sort(ak2,ak2+num);
64 LL sum=0;
65 for(i=0; i<(1<<n1); i++)
66 {
67 int l=0;
68 int r=(1<<n2)-1;
69 LL ask=m-ak1[i];
70 if(ask>=0)
71 {
72 int cc=-1;
73 while(l<=r)
74 {
75 int mid=(l+r)/2;
76 if(ak2[mid]<=ask)
77 {
78 cc=mid;
79 l=mid+1;
80 }
81 else r=mid-1;
82 }
83 sum+=(cc+1);
84
85 }
86 }
87 printf("Case %d: %lld\n",s,sum);
88 }
89 return 0;
90 }

1127 - Funny Knapsack的更多相关文章

  1. Lightoj 1127 - Funny Knapsack 【二分】

    题目链接:problem=1127">http://www.lightoj.com/volume_showproblem.php?problem=1127 题意:有n个物体(n< ...

  2. hdu 1712, multiple-choice knapsack, 分类: hdoj 2015-07-18 13:25 152人阅读 评论(0) 收藏

    reference: 6.4 knapsack in Algorithms(算法概论), Sanjoy Dasgupta University of California, San Diego Chr ...

  3. knapsack problem 背包问题 贪婪算法GA

    knapsack problem 背包问题贪婪算法GA 给点n个物品,第j个物品的重量,价值,背包的容量为.应选哪些物品放入包内使物品总价值最大? 规划模型 max s.t. 贪婪算法(GA) 1.按 ...

  4. [UCSD白板题] Fractional Knapsack

    Problem Introduction Given a set of items and total capacity of a knapsack,find the maximal value of ...

  5. (01背包 当容量特别大的时候) Knapsack problem (fzu 2214)

    http://acm.fzu.edu.cn/problem.php?pid=2214   Problem Description Given a set of n items, each with a ...

  6. FOJProblem 2214 Knapsack problem(01背包+变性思维)

    http://acm.fzu.edu.cn/problem.php?pid=2214 Accept: 4    Submit: 6Time Limit: 3000 mSec    Memory Lim ...

  7. 背包问题(Knapsack problem)采用动态规划求解

    问题说明: 假设有一个背包的负重最多可达8公斤,而希望在背包中装入负重范围内可得之总价物品,假设是水果好了,水果的编号.单价与重量如下所示:0李子4KGNT$45001苹果5KGNT$57002橘子2 ...

  8. FZU 2214 Knapsack problem(背包问题)

    Description 题目描述 Given a set of n items, each with a weight w[i] and a value v[i], determine a way t ...

  9. FZU 2214 Knapsack problem 01背包变形

    题目链接:Knapsack problem 大意:给出T组测试数据,每组给出n个物品和最大容量w.然后依次给出n个物品的价值和体积. 问,最多能盛的物品价值和是多少? 思路:01背包变形,因为w太大, ...

随机推荐

  1. 在VS2008环境下编写C语言DLL,并在C++和C#项目下调用 (转载)

    1.编写DLL a)文件--打开--新建项目--Win32,右侧Win32项目,填写好项目名称,点击"下一步", 应用程序类型选择:"DLL(D)",附加选项: ...

  2. Hive(八)【行转列、列转行】

    目录 一.行转列 相关函数 concat concat_ws collect_set collect_list 需求 需求分析 数据准备 写SQL 二.列转行 相关函数 split explode l ...

  3. linux之sar命令详解

    sar(System Activity Reporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工具之一,可以从多个方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况 ...

  4. 微服务中心Eureka

    一.简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS(AWS 是业务流程管理开发平台AWS Enterprise BPM Platform ...

  5. redis入门到精通系列(五):redis的持久化操作(RDB、AOF)

    (一)持久化的概述 持久化顾名思义就是将存储在内存的数据转存到硬盘中.在生活中使用word等应用的时候,如果突然遇到断电的情况,理论上数据应该是都不见的,因为没有保存的word内容都存放在内存里,断电 ...

  6. spring-cloud-alibaba-dependencies版本问题

    org.springframework.cloud的spring-cloud-alibaba-dependencies管理的nacos最新版本是0.9.0.RELEASE,已经不再维护了,用起来有版本 ...

  7. Tableau预测指示器的运用

    一.将订单日期拖拽两次到列,日期格式设置为年订单日期和月订单日期 二.将销售额拖拽至行,对应结果如下图所示 三.分析-趋势线-显示趋势线-显示选择整个视图 四.右键预测的任意位置,选择预测-描述预测- ...

  8. OpenGL ES2 缩放移动

    OpenGL ES Transformations with Gestures Ricardo Rendon Cepeda on December 10, 2013 Tweet Gestures: I ...

  9. MQTT协议 - arduino ESP32 通过精灵一号 MQTT Broker 进行通讯的代码详解

    前言 之前研究了一段时间的 COAP 协议结果爱智那边没有测试工具,然后 arduino 也没有找到合适的库,我懒癌发作也懒得修这库,就只能非常尴尬先暂时放一放了.不过我在 爱智APP -> 设 ...

  10. [BUUCTF]PWN——hitcontraining_heapcreator

    hitcontraining_heapcreator 附件 步骤: 例行检查,64位程序,开启了canary和nx 本地试运行一下,看看大概的情况,经典的堆的菜单 64位ida载入,main函数没有什 ...