ACdream 1726

题目:http://vjudge.net/problem/ACdream-1726
A Math game
Time Limit: 1000MS Memory Limit: 128000KB 64bit IO Format: %lld & %llu
Submit Status
Description
Recently, Losanto find an interesting Math game. The rule is simple: Tell you a number H, and you can choose some numbers from a set {a[1],a[2],......,a[n]}.If the sum of the number you choose is H, then you win. Losanto just want to know whether he can win the game.
Input
There are several cases.
In each case, there are two numbers in the first line n (the size of the set) and H. The second line has n numbers {a[1],a[2],......,a[n]}. 0 Output
If Losanto could win the game, output "Yes" in a line. Else output "No" in a line.
Sample Input
10 87
2 3 4 5 7 9 10 11 12 13
10 38
2 3 4 5 7 9 10 11 12 13
Sample Output
No
Yes
Source
第九届北京化工大学程序设计竞赛

题目大意是,给定一个数字H,和n个数字,检查能否从n个数字中找出几个(可以是全部)和为H,如果找到输出Yes,找不到输出No。

我的做法是DFS,但是超时了。

百度其他人的做法是 二分+DFS ,然后对比了两个方法不同,我只能看出一点,我是加,Ta是加和加。

我的做法是直接深度优先求前几个(不一定连续)项的和,Ta是深度优先求前几个(不一定连续)项的和,同时将剩下的项求和,感觉就是运气问题了,如果倒数第二个不能加入到总数里,那么,二分+DFS 的时间和直接 DFS 的时间是一样的,感觉测试数据有水。

ACdream 1726_第1张图片
demo.jpg

解题报告文档 http://pan.baidu.com/s/1kUEKYMz

程序清单 http://pan.baidu.com/s/1pLEncE3

==========================文档结束============================
附图片合成工具 http://pan.baidu.com/s/1kU9vuHT


文档顺序如下
题目链接 -- 正文 -- 程序截图 -- 文档下载链接 -- 程序清单 -- 其他说明

你可能感兴趣的:(ACdream 1726)