1235 - Coin Change (IV)
| Time Limit: 1 second(s) | Memory Limit: 32 MB |
Given n coins, values of them are A1, A2 ... An respectively, you have to find whether you can pay K using the coins. You can use any coin at most two times.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case starts with a line containing two integers n (1 ≤ n ≤ 18) and K (1 ≤ K ≤ 109). The next line contains n distinct integers denoting the values of the coins. These values will lie in the range [1, 107].
Output
For each case, print the case number and 'Yes' if you can pay K using the coins, or 'No' if it's not possible.
Sample Input |
Output for Sample Input |
|
3 2 5 1 2 2 10 1 2 3 10 1 3 5 |
Case 1: Yes Case 2: No Case 3: Yes |
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stdlib.h>
7 #include<math.h>
8 #include<stack>
9 using namespace std;
10 typedef long long LL;
11 int ans[100];
12 int ak[100000];
13 int ac[100000];
14 int N,M;
15 int id1[100];
16 int id2[100];
17 void dfs(int n,int m,int sum)
18 {
19 if(n==m)
20 {
21 ak[N]=sum;
22 N++;
23 return ;
24 }
25 int i;
26 for(i=0; i<=2; i++)
27 {
28 dfs(n+1,m,sum+id1[n]*i);
29 }
30 }
31 void dfs1(int n,int m,int sum)
32 {
33 if(n==m)
34 {
35 ac[M]=sum;
36 M++;
37 return ;
38 }
39 int i;
40 for(i=0; i<=2; i++)
41 {
42 dfs1(n+1,m,sum+id2[n]*i);
43 }
44 }
45 int er(int n,int m,int ask)
46 {
47 int mid=(n+m)/2;
48 if(n>m)
49 return 0;
50 if(ac[mid]==ask)
51 {
52 return 1;
53 }
54 else if(ac[mid]>ask)
55 {
56 return er(n,mid-1,ask);
57 }
58 else return er(mid+1,m,ask);
59
60 }
61 int main(void)
62 {
63 int i,j,k;
64 scanf("%d",&k);
65 int s;
66 int n,m;
67 for(s=1; s<=k; s++)
68 {
69 scanf("%d %d",&n,&m);
70 for(i=0; i<n; i++)
71 {
72 scanf("%d",&ans[i]);
73 }
74 int cnt1=n/2;
75 int cnt2=n-cnt1;
76 for(i=0; i<cnt1; i++)
77 {
78 id1[i]=ans[i];
79 }
80 for(i=cnt1; i<n; i++)
81 {
82 id2[i-cnt1]=ans[i];
83 }
84 N=0;
85 M=0;
86 dfs(0,cnt1,0);
87 dfs1(0,cnt2,0);
88 sort(ac,ac+M);
89 int flag=0;
90 for(i=0; i<N; i++)
91 {
92 int ask=m-ak[i];
93 flag=er(0,M-1,ask);
94 if(flag)break;
95 }
96 printf("Case %d: ",s);
97 if(flag)
98 printf("Yes\n");
99 else printf("No\n");
100 }
101 return 0;
102 }
1235 - Coin Change (IV)的更多相关文章
- LightOJ 1235 - Coin Change (IV) (折半枚举)
题目链接: http://www.lightoj.com/volume_showproblem.php?problem=1235 题目描述: 给出n个硬币,每种硬币最多使用两次,问能否组成K面值? 解 ...
- Lightoj 1235 - Coin Change (IV) 【二分】
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1235 题意: 有N个硬币(N<=18).问是否能在每一个硬币使用不超过两 ...
- Coin Change (IV) (dfs)
Coin Change (IV) Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu [Subm ...
- [LeetCode] Coin Change 硬币找零
You are given coins of different denominations and a total amount of money amount. Write a function ...
- HDOJ 2069 Coin Change(母函数)
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- HDU 2069 Coin Change
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- UVA 674 Coin Change(dp)
UVA 674 Coin Change 解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730#problem/ ...
- JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)
JSU省赛队员选拔赛个人赛1 一.题目概述: A.Coin Change(暴力求解.动态规划) B.Fibbonacci Number(递推求解) C.Max Num(排序.比较) D.单词数 ...
- C - Coin Change (III)(多重背包 二进制优化)
C - Coin Change (III) Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
随机推荐
- 使用SpringBoot实现文件的下载
上一篇博客:使用SpringBoot实现文件的上传 已经实现了文件的上传,所以紧接着就是下载 首先还是html页面的简单设计 <form class="form-signin" ...
- C#表格,表格信息、GridView使用。
page: <%@ Control Language="C#" AutoEventWireup="true" CodeFile="test1.a ...
- abuse
abuse 近/反义词: ill-treat, maltreat, mistreat, misuse, prostitute, spoil; defame, disparage, malign, re ...
- Android 图片框架
1.图片框架:Picasso.Glide.Fresco 2.介绍: picasso:和Square的网络库能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现 Glid ...
- VUE页面实现加载外部HTML方法
前后端分离,后端提供了接口.但有一部分数据,比较产品说明文件,是存在其他的服务器上的.所以,在页面显示的时候,如果以页面内嵌的形式显示这个说明文件.需要搞点事情以达到想要的效果.本文主要和大家介绍VU ...
- 理解JMX之介绍和简单使用
JMX最常见的场景是监控Java程序的基本信息和运行情况,任何Java程序都可以开启JMX,然后使用JConsole或Visual VM进行预览.下图是使用Jconsle通过JMX查看Java程序的运 ...
- jQuery 的两种语法
文档就绪事件(文档加载完成之后才执行jQuer代码): 第一种: $(document).ready(function() { // jQuery 代码.... }); 第二种: $(function ...
- 【C/C++】函数的默认参数/函数的占位参数/函数重载/注意事项
函数的默认参数 返回值类型 函数名(参数=默认值){} #include <iostream> using namespace std; int func(int a = 10, int ...
- IDE常用插件
IDE 常用插件集合 :
- Jenkins安全加固
1.jenkins未授权访问 描述 jenkins不当配置可导致未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,w ...