快速切题 hdu2416 Treasure of the Chimp Island 搜索 解题报告
Treasure of the Chimp Island
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 313 Accepted Submission(s): 151
The hardness of the stone blocks is an integer between 1 and 9, showing the number of days required to destroy the block. We neglect the time required to travel inside the corridors. Using a dynamite, Bob can destroy a block almost immediately, so we can ignore the time required for it too. The problem is to find the minimum time at which Bob can reach the treasure. He may choose any gate he wants to enter ZM2.
*.1....4..$...*
*..***..2.....*
*..2..*****..2*
*..3..******37A
*****9..56....*
*.....******..*
***CA**********
*****
*$3**
*.2**
***#*
--
IMPOSSIBLE
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int maxn=111;
char maz[maxn][maxn];
int n,m;
int vis[maxn][maxn][27];
const int inf=0x7ffffff;
class node{
public:
int x,y,t,p;
node(){x=y=t=p=0;}
node (int tx,int ty,int tt,int tp):x(tx),y(ty),t(tt),p(tp){}
bool operator <(const node & n2)const {
return t>n2.t;
}
};
int isdoor(int x,int y){
if(maz[x][y]=='#')return 0;
if(maz[x][y]>='A'&&maz[x][y]<='Z')return maz[x][y]-'A'+1;
return -1;
}
int isstone(int x,int y){
if(maz[x][y]>='0'&&maz[x][y]<='9')return maz[x][y]-'0';
return -1;
}
bool judge(int x,int y){
if(x>=0&&x<n&&y>=0&&y<m)return true;
return false;
}
void printmaz(){
printf("maz %d %d\n",n,m);
for(int i=0;i<n;i++)printf("%s\n",maz[i]);
}
priority_queue <node >que;
const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int bfs(){
while(!que.empty())que.pop();
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(isdoor(i,j)!=-1){
que.push(node(i,j,0,isdoor(i,j)));
maz[i][j]='*';
}
}
}
while(!que.empty()){
node tp=que.top();que.pop();
//printf("pack x%d y%d t%d p%d\n",tp.x,tp.y,tp.t,tp.p);
for(int i=0;i<4;i++){
int tx=tp.x+dx[i],ty=tp.y+dy[i];
if(judge(tx,ty)){
if(maz[tx][ty]=='$')return tp.t;
else if(maz[tx][ty]=='.'){
if(vis[tx][ty][tp.p]==-1||vis[tx][ty][tp.p]>tp.t){
vis[tx][ty][tp.p]=tp.t;
que.push(node(tx,ty,tp.t,tp.p));
}
}
else if(isstone(tx,ty)!=-1){
if(vis[tx][ty][tp.p]==-1||vis[tx][ty][tp.p]>tp.t+isstone(tx,ty)){
vis[tx][ty][tp.p]=tp.t+isstone(tx,ty);
que.push(node(tx,ty,tp.t+isstone(tx,ty),tp.p));
}
if(tp.p>0&&(vis[tx][ty][tp.p-1]==-1||vis[tx][ty][tp.p-1]>tp.t)){
vis[tx][ty][tp.p-1]=tp.t;
que.push(node(tx,ty,tp.t,tp.p-1));
}
}
}
}
}
return inf;
}
int main(){
while(1){
for(n=0;(gets(maz[n]))&&strcmp(maz[n],"--")!=0&&strlen(maz[n])!=0;n++){}
if(strlen(maz[n])!=0)break;//in the end
m=strlen(maz[0]);
memset(vis,-1,sizeof(vis));
int ans;
ans=bfs();
if(ans!=inf)printf("%d\n",ans);
else puts("IMPOSSIBLE");
}
return 0;
}
快速切题 hdu2416 Treasure of the Chimp Island 搜索 解题报告的更多相关文章
- Treasure of the Chimp Island
Treasure of the Chimp Island Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 【LeetCode】Island Perimeter 解题报告
[LeetCode]Island Perimeter 解题报告 [LeetCode] https://leetcode.com/problems/island-perimeter/ Total Acc ...
- 【HDOJ】2416 Treasure of the Chimp Island
bfs().题目的数据乱码.应该如下: *****#********* *.......$...* *..***.......* *....*****..* *....******37A *****. ...
- LeetCode 463 Island Perimeter 解题报告
题目要求 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 rep ...
- 【LeetCode】463. Island Perimeter 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 减去相交部分 参考资料 日期 题目地址:https: ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- 快速切题 sgu120. Archipelago 计算几何
120. Archipelago time limit per test: 0.25 sec. memory limit per test: 4096 KB Archipelago Ber-Islan ...
- 快速切题 poj 2485 Highways prim算法+堆 不完全优化 难度:0
Highways Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23033 Accepted: 10612 Descri ...
- 快速切题sgu127. Telephone directory
127. Telephone directory time limit per test: 0.25 sec. memory limit per test: 4096 KB CIA has decid ...
随机推荐
- UVa 10635 Prince and Princess - 动态规划
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对 ...
- 在awk中通过system调用sql语句来说明引号的使用
一个实际应用例子: 在awk中,通过system调用连接数据库并作select操作,select语句中where条件来自于一个文件(file)的第一个域($1). $ cat file ... ... ...
- VC++实现程序重启的方法(转载)
转载:http://blog.csdn.net/clever101/article/details/9327597 很多时候系统有很多配置项,修改了配置项之后能有一个按钮实现系统重启.所谓重启就是杀死 ...
- python2.7+pyqt4 +eric4安装配置
eric4安装与汉化一直没找到合适python的IDE工具,直到遇到了eric4这款开源软件.然而在使用过程中发现输出的中文字符竟然是乱码,修修改改配置总算正常显示了,何不干脆把软件界面也汉化下. 一 ...
- Wireshark分析RabbitMQ
消费者Code: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- jquery 之$.fn的用法示例
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效. 若扩展$.fn.abc(),即$.fn.abc()是对jquery扩展一个abc的方法,那么每个jquer ...
- HDU 2243 考研路茫茫——单词情结(AC自动机+矩阵快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=2243 题意: 给出m个模式串,求长度不超过n的且至少包含一个模式串的字符串个数. 思路: 如果做过poj2778 ...
- NOI 8785 装箱问题(0-1背包)
http://noi.openjudge.cn/ch0206/8785/ 描述 有一个箱子容量为V(正整数,0<=v<=20000),同时有n个物品(0< n<n<=30 ...
- Z-score(Z值)的意义--转载
http://blog.sina.com.cn/s/blog_72208a6a0101cdt1.html http://www.docin.com/p-350677620.html http://we ...
- 关于Java 中Integer 和Long对象 对比的陷阱(简单却容易犯的错误)
彩票客户端“忘记密码”功能有bug,今天调试时,发现了原因: 功能模块中有一段: if(userpo.getId()!=Long.valueOf(uid)){ throw new VerifyExce ...