Topic:
Kill the Monster 
Time limit:2000/1000 MS (java/others) Memory limit:32768/32768 K (java/others) 
Total submission (s): 133 Accepted Submission (s): 97 

Problem Descriptionthere is a mountain near Yifenfei ' s hometown. On the mountain lived a big monster. As a hero in hometown, Yifenfei wants to kill it. Now we know Yifenfei has n spells, and the monster has M hp, when HP <= 0 meaning monster is killed. Yifenfei ' s spells has different effect if used in different time. Now all you have spells ' s effects, expressed (A, M). A show the spell can cost A HPmonster in the common time. M show that is when the monster's HP <= M, using this spell can get double effect.

Inputthe input contains multiple test cases. Each test case include, first and integers n, m (2<n<10, 1<m<10^7), express how many spells Yifenfei have. Next n line, each line express one spell. (Ai, Mi). (0<ai,mi<=m).

Outputfor each test case output one integer, how many spells Yifenfei should with at least. If Yifenfei can not kill the monster output1. 
Sample Input3 10010 2045 895 403 10010 2045 905 403 10010 2045 845 40 
Sample Output321 
Authoryifenfei 
The age of Source struggle 
Recommendyifenfei 
Topic Analysis:
Deep Search. Simple question. In fact, this problem basically no difficulty. Just read the subject.
The code is as follows:
/* * h.cpp * * Created on:2015 February 26 * author:administrator * * #include <iostream> #include <cstdio>usin G namespace Std;const int maxn = 11;struct node{//skill structure int spell;//damage value int m;//If this big trick is released, the monster's HP drizzle is the value, then the damage is spell*2 }node[maxn];bool visited[maxn];//is used to mark whether a skill has used an int ans;//kill a monster the minimum number of skills required int n;//Total skill number int hp;//Monster's energy value/** * Deep search. * k: Indicates the current number of skills * HP: The current Monster Energy value */void DFS (int k,int hp) {/** * Cross judgment */if (K >= 11) {//If all the skills have been put out of return;//Return.} /** * Determine if the */if is successful (HP <= 0) {//If the monster's energy value has been <=0if (ans > k) {//If the minimum number of skills currently saved < Current minimum skill number ans = k;//update the minimum number of skills in the bag village}return ;//Return}int i;for (i = 1; I <= n; ++i) {//Traverse all skills if (visited[i] = false) {//If the skill has not been used visited[i] = true;//mark the skill as already using if (h P <= Node[i]. M) {//If the monster's energy value <=mdfs (k+1,hpnode[i].spell*2);//Then the damage value is spell*2. Continue using the next skill}else{//otherwise DFS (K+1,hpnode[i]. spell);//This time caused the Shanghai city spell}visited[i] = false;//rollback. Mark the skill as not being accessed}}}int main () {while (scanf ("%d%d", &n,&hp)! = EOF) {int i;for (i = 1; I <= n; ++i) {scanf ("%d%d", &AMp;node[i].spell,&node[i]. M);} memset (visited,false,sizeof (visited)); ans = 11;//initialization skill minimum number of uses DFS (0,HP); if (ans = = 11) {//If ANS has not been updated printf (" 1\n") ;//Then prove that the monster was not killed}else{//otherwise, it proves that the monster was killed by printf ("%d\n", ans);//output using the minimum number of skills}}return 0;}
(Hdu step 4.2.7) Kill the Monster (there are n skills to find the minimum number of uses of the skill to kill monsters. When using a certain skill, if the monster's energy value is hp<=m, the damage is twice times the original value.