zoukankan      html  css  js  c++  java
  • hdu 2616 暴力使用 dfs求最短路径(剪枝有点依稀)

    Kill the monster

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


    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
     #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int mapp[11][2];
    int vis[11];
    int minn,n,m,flag;
    void dfs(int bloor,int time)
    {
     int i,j;
     if(bloor<=0)
     {
     // cout<<".."<<endl;
      if(minn>time) minn=time;
     // cout<<maxx<<endl;
      flag=1;
      return;
     }
     if(time>=minn) return ;//  当次数比以前走过的次数多的时候 剪去
     for(i=1;i<=n;i++)
     {
      if(vis[i]==1) continue;
      vis[i]=1;
     // cout<<".."<<endl;
      if(bloor<=mapp[i][1])
      {
      // cout<<".."<<endl;
          dfs(bloor-2*mapp[i][0],time+1); 
         }
      else
      {
      // cout<<".."<<endl;
       dfs(bloor-mapp[i][0],time+1);
      }
      vis[i]=0;
     }
    }
    int main()
    {
     int i,j;
     while(cin>>n>>m)
     {
      for(i=1;i<=n;i++)
      {
       scanf("%d %d",&mapp[i][0],&mapp[i][1]);
      // cout<<mapp[i][0]<<mapp[i][1]<<endl;
      }
      memset(vis,0,sizeof(vis));
      flag=0;
      minn=999;
      dfs(m,0);
      if(flag==0) printf("-1 ");
      else printf("%d ",minn);
     }
     return 0;
    }
  • 相关阅读:
    AppServ设置虚拟主机 及域名连接
    PHPCMS v9 实现首页,列表页,内容页调用点击量方法
    phpcms v9 后台首页 去掉团队信息等版权
    phpcms v9 在当前栏目下获取父栏目与当前栏目的名称与连接
    不是技术牛人,如何拿到国内IT巨头的Offer
    解决phpcms V9缩略图模糊的方法
    apache、nginx、iis 全球分布
    获取屏幕宽度、浏览器宽度、网页高度,宽度信息
    21个适合扁平化设计的创意超链接效果
    javascript模拟鼠标双击事件
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5472294.html
Copyright © 2011-2022 走看看