- 浏览: 38347 次
-
文章分类
- 全部博客 (41)
- 卧鸟个去 (2)
- Transform (2)
- Mathmatic (9)
- Plant-Tree (7)
- Data-Struct (12)
- Red-Black-Tree (1)
- Radix-Tree (1)
- Trie (2)
- String (4)
- BST (2)
- Amazing-Union-Find-Set (1)
- HDU (27)
- OJ (32)
- BFS (3)
- Pretty-Suffix-Array (2)
- POJ (6)
- Graceful-Segment-Tree (2)
- Geometry (6)
- Priority-Queue (2)
- Dynamic-Programing (1)
- DP (3)
- LCS (1)
- Convex-Hull (2)
- Triangulation (1)
- DFS (3)
- Combinatorial-Mathematics (2)
- Big-Number (1)
- Statistic (3)
- STL (1)
- Shortest-Path (3)
- ZOJ (1)
- Leftist-Tree (1)
- Prime (1)
- Binary-Index-Tree (1)
- (1)
- Stack (1)
- SPFA (0)
- CRT (1)
Nightmare
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2506 Accepted Submission(s): 1248
Problem Description
Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The labyrinth has an exit, Ignatius should get out of the labyrinth before the bomb explodes. The initial exploding time of the bomb is set to 6 minutes. To prevent the bomb from exploding by shake, Ignatius had to move slowly, that is to move from one area to the nearest area(that is, if Ignatius stands on (x,y) now, he could only on (x+1,y), (x-1,y), (x,y+1), or (x,y-1) in the next minute) takes him 1 minute. Some area in the labyrinth contains a Bomb-Reset-Equipment. They could reset the exploding time to 6 minutes.
Given the layout of the labyrinth and Ignatius' start position, please tell Ignatius whether he could get out of the labyrinth, if he could, output the minimum time that he has to use to find the exit of the labyrinth, else output -1.
Here are some rules:
1. We can assume the labyrinth is a 2 array.
2. Each minute, Ignatius could only get to one of the nearest area, and he should not walk out of the border, of course he could not walk on a wall, too.
3. If Ignatius get to the exit when the exploding time turns to 0, he can't get out of the labyrinth.
4. If Ignatius get to the area which contains Bomb-Rest-Equipment when the exploding time turns to 0, he can't use the equipment to reset the bomb.
5. A Bomb-Reset-Equipment can be used as many times as you wish, if it is needed, Ignatius can get to any areas in the labyrinth as many times as you wish.
6. The time to reset the exploding time can be ignore, in other words, if Ignatius get to an area which contain Bomb-Rest-Equipment, and the exploding time is larger than 0, the exploding time would be reset to 6.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case starts with two integers N and M(1<=N,Mm=8) which indicate the size of the labyrinth. Then N lines follow, each line contains M integers. The array indicates the layout of the labyrinth.
There are five integers which indicate the different type of area in the labyrinth:
0: The area is a wall, Ignatius should not walk on it.
1: The area contains nothing, Ignatius can walk on it.
2: Ignatius' start position, Ignatius starts his escape from this position.
3: The exit of the labyrinth, Ignatius' target position.
4: The area contains a Bomb-Reset-Equipment, Ignatius can delay the exploding time by walking to these areas.
Output
For each test case, if Ignatius can get out of the labyrinth, you should output the minimum time he needs, else you should just output -1.
Sample Input
3 3 3 2 1 1 1 1 0 1 1 3 4 8 2 1 1 0 1 1 1 0 1 0 4 1 1 0 4 1 1 0 0 0 0 0 0 1 1 1 1 4 1 1 1 3 5 8 1 2 1 1 1 1 1 4 1 0 0 0 1 0 0 1 1 4 1 0 1 1 0 1 1 0 0 0 0 3 0 1 1 1 4 1 1 1 1 1
Sample Output
4 -1 13 尼条题目大意就系一个人入左去一个迷宫之后,就触发左一个定时6分钟geBoom。距要尽力跑到出口。迷宫有起点(2),空地(1),墙(0),Boom重置器(4)【定时Boom重置为6】,出口(3)。并有如下规则:1、每分钟,条牟利剩系可以走上下左右四个相邻ge格,并且每步要行一分钟。(唔知系个人行得慢剩系d格太大)2、如果行到出口ge时候,倒计时又到左0,呢个人就钉柴。3、如果行到重置器ge时候,倒计时又到左0,呢个人都系钉柴。4、每个格都可以重复行,(姐系可以无限重置都得,就系用尼条规则剪枝)。 我用左广搜+比较按剩余时间剪枝。
下面结合代码解释: HDU 1072 0ms 276K 1275B SGetEternal{(。)(。)}!
精粹就系时间剪枝,吾剪就超时,差好hi远。9up完毕……
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2506 Accepted Submission(s): 1248
Problem Description
Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The labyrinth has an exit, Ignatius should get out of the labyrinth before the bomb explodes. The initial exploding time of the bomb is set to 6 minutes. To prevent the bomb from exploding by shake, Ignatius had to move slowly, that is to move from one area to the nearest area(that is, if Ignatius stands on (x,y) now, he could only on (x+1,y), (x-1,y), (x,y+1), or (x,y-1) in the next minute) takes him 1 minute. Some area in the labyrinth contains a Bomb-Reset-Equipment. They could reset the exploding time to 6 minutes.
Given the layout of the labyrinth and Ignatius' start position, please tell Ignatius whether he could get out of the labyrinth, if he could, output the minimum time that he has to use to find the exit of the labyrinth, else output -1.
Here are some rules:
1. We can assume the labyrinth is a 2 array.
2. Each minute, Ignatius could only get to one of the nearest area, and he should not walk out of the border, of course he could not walk on a wall, too.
3. If Ignatius get to the exit when the exploding time turns to 0, he can't get out of the labyrinth.
4. If Ignatius get to the area which contains Bomb-Rest-Equipment when the exploding time turns to 0, he can't use the equipment to reset the bomb.
5. A Bomb-Reset-Equipment can be used as many times as you wish, if it is needed, Ignatius can get to any areas in the labyrinth as many times as you wish.
6. The time to reset the exploding time can be ignore, in other words, if Ignatius get to an area which contain Bomb-Rest-Equipment, and the exploding time is larger than 0, the exploding time would be reset to 6.
Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case starts with two integers N and M(1<=N,Mm=8) which indicate the size of the labyrinth. Then N lines follow, each line contains M integers. The array indicates the layout of the labyrinth.
There are five integers which indicate the different type of area in the labyrinth:
0: The area is a wall, Ignatius should not walk on it.
1: The area contains nothing, Ignatius can walk on it.
2: Ignatius' start position, Ignatius starts his escape from this position.
3: The exit of the labyrinth, Ignatius' target position.
4: The area contains a Bomb-Reset-Equipment, Ignatius can delay the exploding time by walking to these areas.
Output
For each test case, if Ignatius can get out of the labyrinth, you should output the minimum time he needs, else you should just output -1.
Sample Input
3 3 3 2 1 1 1 1 0 1 1 3 4 8 2 1 1 0 1 1 1 0 1 0 4 1 1 0 4 1 1 0 0 0 0 0 0 1 1 1 1 4 1 1 1 3 5 8 1 2 1 1 1 1 1 4 1 0 0 0 1 0 0 1 1 4 1 0 1 1 0 1 1 0 0 0 0 3 0 1 1 1 4 1 1 1 1 1
Sample Output
4 -1 13 尼条题目大意就系一个人入左去一个迷宫之后,就触发左一个定时6分钟geBoom。距要尽力跑到出口。迷宫有起点(2),空地(1),墙(0),Boom重置器(4)【定时Boom重置为6】,出口(3)。并有如下规则:1、每分钟,条牟利剩系可以走上下左右四个相邻ge格,并且每步要行一分钟。(唔知系个人行得慢剩系d格太大)2、如果行到出口ge时候,倒计时又到左0,呢个人就钉柴。3、如果行到重置器ge时候,倒计时又到左0,呢个人都系钉柴。4、每个格都可以重复行,(姐系可以无限重置都得,就系用尼条规则剪枝)。 我用左广搜+比较按剩余时间剪枝。
下面结合代码解释: HDU 1072 0ms 276K 1275B SGetEternal{(。)(。)}!
#include<iostream> #include<queue> using namespace std; #define INFI (1<<31)-1 struct point //队列类型,step储存步数。 { int x,y,step; void set(int a,int b,int c) { x=a; y=b; step=c; } } int main() { int t,n,m,i,j,hx,hy,x,y,mn; char map[10][10]; int tim[10][10]; //储存点(i,j)当前时间 char move[4][2]={0,1,1,0,0,-1,-1,0}; queue<point> que; scanf("%d",&t); while (t--) { hx=hy=0; scanf("%d%d",&n,&m); for (i=0;i<=m+1;i++) map[0][i]=map[n+1][i]=0; //设置出界墙,即系系将迷宫外部加墙 for (i=1;i<=n;i++) { map[i][0]=map[i][m+1]=0; //设置出界墙too for (j=1;j<=m;j++) { tim[i][j]=0; scanf("%d",&map[i][j]); if (map[i][j]==2) { tim[i][j]=6; hx=i; hy=j; } //起始点剩余时间为6 } } mn=INFI; h.set(hx,hy,0); que.push(h); while (!que.empty()) { temp=que.front(); if (map[temp.x][temp.y]==3 && mn>temp.step) { mn=temp.step; h.step=temp.step; } for (i=0;i<4 && tim[temp.x][temp.y]-1;i++) { x=temp.x+move[i][0]; y=temp.y+move[i][1]; if (map[x][y]!=0 && tim[x][y]<tim[temp.x][temp.y]-1) //&& 后面就系时间剪枝,当当前点剩余时间-1多余下一点时先行,防回荡,可以自己举例。 { tim[x][y]=tim[temp.x][temp.y]-1; if (map[x][y]==4) tim[x][y]=6; in.set(x,y,temp.step+1); que.push(in); } } que.pop(); } if (mn<INFI) printf("%d",h.step); else printf("-1"); putchar('/n'); } return 0; }
精粹就系时间剪枝,吾剪就超时,差好hi远。9up完毕……
发表评论
-
HDU 1370 Biorhythms
2011-08-03 10:27 1214Biorhythms Time Limit: 2000/10 ... -
HDU 1075 What Are You Talking About
2011-08-04 11:00 879What Are You Talking About Tim ... -
HDU 1058 Humble Numbers
2011-08-02 15:55 1245Humble Numbers Time Limit: 200 ... -
HDU 2095 find your present (2)
2011-08-02 16:13 847find your present (2) Time Lim ... -
HDU 1022 Train Problem I
2011-08-02 21:00 1030Train Problem I Time Limit: 20 ... -
2142 HDU box
2011-08-02 21:21 784box Time Limit: 3000/1000 MS ( ... -
HDU 2151 Worm
2011-08-01 20:48 882Worm Time Limit: 1000/1000 MS ... -
HDU 2722 Here We Go(relians) Again
2011-08-02 00:06 1050Here We Go(relians) Again Time ... -
HDU 3791 二叉搜索树
2011-08-02 14:26 1227二叉搜索树 Time Limit: 20 ... -
PKU 2352 Stars
2011-07-31 21:47 1050Stars Time Limit: 1000MS ... -
PKU 2774 Long Long Message
2011-07-31 21:26 921Long Long Message Time Li ... -
PKU 2777 Count Color
2011-07-31 21:31 815Count Color Time Limit: 1 ... -
HDU 2098 分拆素数和
2011-07-31 21:08 1080分拆素数和 Time Limit: 1000/1000 MS ... -
ZOJ 3512 Financial Fraud .
2011-07-31 20:49 1309Financial Fraud Time Limit: 3 ... -
HDU 1798 Tell me the area .
2011-07-31 20:47 1155Tell me the area Time Limit: 3 ... -
HDU 2962 Trucking .
2011-07-31 20:46 708Trucking Time Limit: 20000/100 ... -
HDU 1596 find the safest road .
2011-07-31 20:45 617find the safest road Time Limi ... -
HDU 2553 N皇后问题 .
2011-07-31 20:20 719N皇后问题 Time Limit: 2000/1000 MS ... -
HDU 1392 Surround the Trees .
2011-07-31 20:19 824Surround the Trees Time Limit: ... -
HDU 1234 开门人和关门人 .
2011-07-31 20:17 694开门人和关门人 Time Limit: 2000/1000 ...
相关推荐
"HDU1072 Nightmare.cpp"可能涉及到深度优先搜索在解决复杂问题中的应用,如梦境解析;"HDU1016 Prime Ring Problem.cpp"可能使用了BFS寻找素数环;"HDU1015 Safecracker.cpp"可能通过BFS算法破解密码锁;"HDU1238 ...
"Nightmare"这个主题可能是指一种特定的字体或一套字体库,它以恐怖、诡异或者梦境般的风格来营造特殊的视觉效果。让我们深入探讨一下与字体相关的知识点。 1. **字体类型**:字体通常分为衬线体(如Times New ...
* 题目1072:Nightmare,涉及到完全搜索的概念。 4. 图的匹配:图的匹配算法、图的稳定匹配等。 * 题目1104:Remainder,涉及到图的匹配算法。 * 题目1105:The Wolves and the Sheep,涉及到图的稳定匹配概念。 5...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
《基于YOLOv8的智慧社区独居老人生命体征监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
Android Studio Meerkat 2024.3.1 Patch 1(android-studio-2024.3.1.14-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/90557060 part2: https://download.csdn.net/download/weixin_43800734/90557056
侧轴承杯加工工艺编制及夹具设计.zip
NASA数据集锂电池容量特征提取(Matlab完整源码和数据) 作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
板料折弯机液压系统设计.zip
C6150车床的设计.zip
机器学习之KNN实现手写数字
python爬虫;智能切换策略,反爬检测机制
mpls-vpn-optionA-all
56tgyhujikolp[
GB 6442-86企业职工伤亡事故调查分析规则.pdf
汽车液压式主动悬架系统的设计().zip
2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文档详细复现了金融数学课程作业,涵盖欧式看涨期权定价和投资组合优化两大部分。对于欧式看涨期权定价,分别采用Black-Scholes模型和蒙特卡洛方法进行了计算,并对彩虹期权进行了基于最大值的看涨期权定价。投资组合优化部分则探讨了最小方差组合、给定收益的最小方差组合、最大效用组合以及给定风险的最大收益组合四种情形,还对比了拉格朗日乘数法和二次规划求解器两种方法。文中不仅提供了详细的MATLAB代码,还有详尽的中文解释,确保每一步骤清晰明了。 适合人群:金融工程专业学生、量化分析师、金融数学爱好者。 使用场景及目标:①帮助学生理解和掌握金融衍生品定价的基本原理和方法;②为从事量化分析的专业人士提供实用工具和技术支持;③作为教学材料辅助高校教师讲授相关内容。 其他说明:文档还包括了完整的论文结构建议,从封面页到结论,再到附录,涵盖了所有必要元素,确保提交的作业符合学术规范。此外,还特别强调了数据预处理步骤,确保代码可以顺利运行。
脉冲电解射流加工喷射装置设计(1)