• HDU-2616


    Kill the monster

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 1525    Accepted Submission(s): 1043


    Problem Description
    There 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 have n spells, and the monster have m HP, when HP <= 0 meaning monster be killed. Yifenfei’s spells have different effect if used in different time. now tell you each spells’s effects , expressed (A ,M). A show the spell can cost A HP to monster in the common time. M show that when the monster’s HP <= M, using this spell can get double effect.
     
    Input
    The input contains multiple test cases.
    Each test case include, first two integers n, m (2<n<10, 1<m<10^7), express how many spells yifenfei has.
    Next n line , each line express one spell. (Ai, Mi).(0<Ai,Mi<=m).
     
    Output
    For each test case output one integer that how many spells yifenfei should use at least. If yifenfei can not kill the monster output -1.
     
    Sample Input
    3 100
    10 20
    45 89
    5 40
     
    3 100
    10 20
    45 90
    5 40
     
     
    3 100
    10 20
    45 84
    5 40
     
    Sample Output
    3
    2
    -1

    题意:

    有n个符咒,怪兽有m点血。每个符咒有两个属性:

    1.伤害A;

    2.在怪物血量低于M时造成2*A点伤害。

    AC代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 struct node{
     5     int x,y;
     6 }a[11];
     7 
     8 bool vis[11];
     9 int n,m,ans;
    10 
    11 void dfs(int m,int len){
    12     if(len>=ans)
    13         return;
    14     if(m<=0){
    15         ans=min(ans,len);
    16         return;
    17     }
    18     for(int i=0;i<n;i++){
    19         if(vis[i]==0){
    20             vis[i]=1;
    21             if(m<=a[i].y)
    22             dfs(m-2*a[i].x,len+1);
    23             else
    24             dfs(m-a[i].x,len+1);
    25             vis[i]=0;
    26         }
    27     }
    28 }
    29 
    30 int main(){
    31     while(cin>>n>>m){
    32         for(int i=0;i<n;i++){
    33             cin>>a[i].x>>a[i].y;
    34         } 
    35         memset(vis,0,sizeof(vis));
    36         ans=11;
    37         dfs(m,0);
    38         if(ans>10){
    39             cout<<-1<<endl;
    40         }
    41         else{
    42             cout<<ans<<endl;
    43         }
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    Socket编程
    jdbc03 使用servlet实现
    el和jstl
    java03变量和基本数据类型
    java02
    ssh整合
    U1总结
    多线程
    spring07 JDBC
    cocos2dx中的三种基本的数据类型
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/6740828.html
Copyright © 2020-2023  润新知