1. Heavy Coins

 

Bahosain has a lot of coins in his pocket. These coins are really heavy, so he always tries to get rid of some of the coins by using them when paying for the  taxi.

Whenever Bahosain has to pay S pennies for the taxi driver, he tries to choose the maximum number of coin pieces to pay. The driver will accept receiving more than S pennies only if he can’t remove one or more of the given coins and still has S or more  pennies.

For example, if Bahosain uses the coins of the following values: 2, 7 and 5 to pay 11 pennies, the taxi driver    will not accept this because the coin of value 2 can be removed. On the other hand, when Bahosain uses coins  of 7 and 5 to pay 11 pennies, the driver will accept  it.

Note that the driver won’t give Bahosain any change back if he receives more than S pennies, and Bahosain doesn’t care!

Input

 

The first line of input contains T (1 ≤ T ≤ 1001), the number of test   cases.

The first line of each test case contains two integers: N (1 ≤ N ≤ 10) and S (1 ≤ S ≤ 1000), where N is the number of coins in Bahosain’s pocket and S is the amount (in pennies) Bahosain has to pay for the taxi driver.

The next line contains N space-separated integers between 1 and 100 that represent the values (in pennies) of the coins in Bahosain’s  pocket.

Output

 

For each test case, print a single line with the maximum number of coins Bahosain can use to pay for the driver.

Sample Input

Sample Output

2

3

5

9

6

4

1   3

5

4

7

37

7

5   8

8

5

10

4

Note

In the first test case, Bahosain can pay in any of the following ways: (1, 3, 5), (3, 4, 4) or (1, 4, 4).

/*
题意:
A有一大堆的硬币,他觉得太重了,想花掉硬币去坐的士;
的士司机可以不找零,但是的士司机也不会多收零钱。
怎么样才能使 A 花的零钱最多。 思路-暴力
2^10*1000=1024000 102W 完全不会超时。
直接暴力枚举 方法:
枚举子集,用二进制思想来枚举子集。 */ #include"iostream"
#include"algorithm"
#include"cstdio"
#include"cstring"
#include"cmath"
#define memset(a,b) memset(a,b,sizeof(a))
#define MX 10000 + 50
using namespace std;
int maxx,n,m,a[MX]; bool cmp(int x,int y) {
return x>y;
} void dfs(int x,int sum,int num) {
if(sum>=m) {
maxx=max(maxx,num); //如果花掉的硬币值已经够坐车了,更新最大花掉的硬币数
return ;
}
if(x==n)return; //如果已经查询了所有的硬币返回。
dfs(x+1,sum+a[x],num+1); //递归下去 搜索取下一个硬币的情况
dfs(x+1,sum,num); //搜索不取下一个硬币的情况
} int main() {
int T,num;
cin>>T;
while(T--) {
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++) {
scanf("%d",&a[i]);
}
maxx=0;
sort(a,a+n,cmp); //按照硬币的枝排序;
dfs(0,0,0);
printf("%d\n",maxx);
}
return 0;
}

  

ACM: 限时训练题解-Heavy Coins-枚举子集-暴力枚举的更多相关文章

  1. ACM: 限时训练题解-Runtime Error-二分查找

    Runtime Error   Bahosain was trying to solve this simple problem, but he got a Runtime Error on one ...

  2. ACM: 限时训练题解-Rock-Paper-Scissors-前缀和

    Rock-Paper-Scissors   Rock-Paper-Scissors is a two-player game, where each player chooses one of Roc ...

  3. ACM: 限时训练题解- Travelling Salesman-最小生成树

    Travelling Salesman   After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends mos ...

  4. ACM: 限时训练题解-Epic Professor-水题

    Epic Professor   Dr. Bahosain works as a professor of Computer Science at HU (Hadramout    Universit ...

  5. ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】

    Street Lamps   Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...

  6. 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵  基准时间限制:1 秒 空 ...

  7. Gym - 100712G Heavy Coins(二进制枚举)

    https://vjudge.net/problem/Gym-100712G 题意:给出n枚不同价值的硬币和一个总价S,现在要选择尽量多的硬币来大于等于S,要求是比如说现在选择的硬币的总和为sum,那 ...

  8. UVA 1508 - Equipment 状态压缩 枚举子集 dfs

    UVA 1508 - Equipment 状态压缩 枚举子集 dfs ACM 题目地址:option=com_onlinejudge&Itemid=8&category=457& ...

  9. UVA 11825 - Hackers&#39; Crackdown 状态压缩 dp 枚举子集

    UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集 ACM 题目地址:option=com_onlinejudge&Itemid=8&page=sh ...

随机推荐

  1. 早上3:30左右起来发现时候电脑在一致叫唤就是一个usb的接口可能是鼠标

    然后看了下也没有网络了,早上起来就打了一个电话给网管,就开通了.是没有及时开通.

  2. cutpFTP设置步骤

    cutpFTP设置步骤 平常时为了方便两台电脑之间传送数据,我们可以使用cutpftp这个工具实现,而且cutpftp还具有定时传送的功能,非常方便使用.以下是使用该工具的“同步文件夹”功能同步两台电 ...

  3. Dubbo应用与异常记录

    结合项目里使用暴露出的问题,对并发较多的核心业务或者对请求失败等敏感的业务场景不太建议使用Dubbo, 如电商的购买等行为,使用Dubbo就必须阅读源码,熟悉相关机制,或者直接自己造轮子. >& ...

  4. 在ubuntu上搭建开发环境8---Ubuntu搭建Android开发环境

    需要首先配置好JDK环境 参看:http://www.cnblogs.com/xumenger/p/4460055.html 安装Eclipse 在Android developer的官网上直接下载a ...

  5. 【131031】jsp学习实例 (2013-10-31 15:29:28)

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@ page language= ...

  6. OCJP(1Z0-851) 模拟题分析(五)over

    Exam : 1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam 以下分析全都是我自己分析或者参考网上的,定有 ...

  7. hdu 1698:Just a Hook(线段树,区间更新)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. JavaScript中判断对象类型方法大全2

    在JavaScript中,有5种基本数据类型和1种复杂数据类型,基本数据类型有:Undefined, Null, Boolean, Number和String:复杂数据类型是Object,Object ...

  9. [JavaCore] 微信手机浏览器版本判断

    公司要做微支付,微信浏览器版本要大于5 package com.garinzhang.web.weixin; import org.apache.commons.lang.StringUtils; i ...

  10. hdu 1024 Max Sum Plus Plus

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...