ACM: 限时训练题解-Heavy Coins-枚举子集-暴力枚举
- 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-枚举子集-暴力枚举的更多相关文章
- ACM: 限时训练题解-Runtime Error-二分查找
Runtime Error Bahosain was trying to solve this simple problem, but he got a Runtime Error on one ...
- ACM: 限时训练题解-Rock-Paper-Scissors-前缀和
Rock-Paper-Scissors Rock-Paper-Scissors is a two-player game, where each player chooses one of Roc ...
- ACM: 限时训练题解- Travelling Salesman-最小生成树
Travelling Salesman After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends mos ...
- ACM: 限时训练题解-Epic Professor-水题
Epic Professor Dr. Bahosain works as a professor of Computer Science at HU (Hadramout Universit ...
- ACM: 限时训练题解-Street Lamps-贪心-字符串【超水】
Street Lamps Bahosain is walking in a street of N blocks. Each block is either empty or has one la ...
- 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵 基准时间限制:1 秒 空 ...
- Gym - 100712G Heavy Coins(二进制枚举)
https://vjudge.net/problem/Gym-100712G 题意:给出n枚不同价值的硬币和一个总价S,现在要选择尽量多的硬币来大于等于S,要求是比如说现在选择的硬币的总和为sum,那 ...
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
UVA 1508 - Equipment 状态压缩 枚举子集 dfs ACM 题目地址:option=com_onlinejudge&Itemid=8&category=457& ...
- UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集
UVA 11825 - Hackers' Crackdown 状态压缩 dp 枚举子集 ACM 题目地址:option=com_onlinejudge&Itemid=8&page=sh ...
随机推荐
- eclipse中的任务标记(TODO、FIXME、XXX)
eclipse Task Tags: TODO -用来提醒该标识处的代码有待返回继续编写.更新或者添加.该标签通常在注释块的源文件顶部. FIXME -该标签用来提醒你代码中存在稍后某个时间需要修改的 ...
- 谈谈Delph中的类和对象2---类可以理解成一种特殊的数据结构、类型转换
三.类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换.比如下面代码为一个按钮(Button1)的单击事件 procedu ...
- python多线程之Condition(条件变量)
#!/usr/bin/env python # -*- coding: utf-8 -*- from threading import Thread, Condition import time it ...
- 如何知道SQL语句的性能和改进途径
用EXPLAIN吧... EXPLAIN , , , ) \G;
- SQL索引及视图常用语法
ALTER TABLE department ADD INDEX dept_name_idx (name); SHOW INDEX FROM department \G ALTER TABLE dep ...
- html5 svg
html5 svg <html > <body> <p>canvas 用js 绘画,是整幅画布,适合游戏 svg可放大,支持dom 操作,js事件 线性渐变.高斯模 ...
- web开发的步骤
前端知道是浏览器呈现的部分,相对于前端,后台你可以理解为服务器端专门处理.读取.存储数据库数据的部分. 因为网站是基于B\S架构,即浏览器---服务端架构,就程序来讲,可笼统划分为前端程序和服务器端程 ...
- 系统调用方式文件编程,王明学learn
系统调用方式文件编程 一.文件描述符 在Linux系统中,所有打开的文件也对应一个数字,这个数字由系统来分配,我们称之为:文件描述符. 二.函数学习 2.1打开文件 open 2.1.2 函数原形 ...
- jQuery.fn.extend与jQuery.extend到底区别在哪?
正文: 其实说白了,从两个方法本身就能看出来端倪. 我们先把jQuery看成了一个类,这样好理解一些. jQuery.extend(),是扩展的jQuery这个类. 假设我们把jQuery这个类看成是 ...
- hdu 5833 Zhu and 772002 高斯消元
Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...