设为首页 加入收藏

TOP

HDU 3861 Prison Breake 状态压缩dp+BFS+二分答案
2015-07-20 17:22:44 来源: 作者: 【 】 浏览:2
Tags:HDU 3861 Prison Breake 状态 压缩 BFS +二分 答案
题意:机器人有一个初始能量x,每走到G点时可选择充满能量(初始能量是满的),每走一步消耗一点能量,问当x最小为多少时,可以把所有的Y都走一遍,输出最小的x!


注意:G点和Y点加一起最多15个

附ac代码

#include
  
   
#include
   
     #include
    
      #include
     
       using namespace std; char map[16][16]; int dp[1<<16][16],dis[16][16]; int tot[16][2]; int cnt,first,n,m,ans; int mark[16][16]; int dui[4][2]={0,1,0,-1,1,0,-1,0}; int min(int a,int b) { if(a
      
       b) return a; return b; } struct node{ int x,y,time; }cur,next; int bfs(int x1,int y1,int x2,int y2) { memset(mark,0,sizeof(mark)); queue
       
        q; cur.x=x1; cur.y=y1; cur.time=0; while(!q.empty()) q.pop(); q.push(cur); while(!q.empty()) { cur=q.front(); q.pop(); for(int i=0;i<4;i++) { next.x=cur.x+dui[i][0]; next.y=cur.y+dui[i][1]; next.time=cur.time+1; if(map[next.x][next.y]=='D') continue; if(next.x>=n||next.y>=m||next.x<0||next.y<0) continue; if(next.x==x2&&next.y==y2) return next.time; if(mark[next.x][next.y]) continue; mark[next.x][next.y]=1; q.push(next); } } return -1; } int fun(int kkk) { memset(dp,-1,sizeof(dp)); int i,j; dp[1<
        
         

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 3744 Scout YYF I 矩阵快速幂.. 下一篇Codeforces Round #288 (Div. 2) ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)
·关于 MySQL 数据库学 (2025-12-26 23:20:16)
·SOLVED: Ubuntu 24.0 (2025-12-26 22:51:53)
·Linux 常用命令最全 (2025-12-26 22:51:50)