Tempter of the Bone

HDU图论题目分类 立即下载

点击打开链接

The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone was a trap, and he tried desperately to get out of this maze. 

The maze was a rectangle with sizes N by M. There was a door in the maze. At the beginning, the door was closed and it would open at the T-th second for a short period of time (less than 1 second). Therefore the doggie had to arrive at the door on exactly the T-th second. In every second, he could move one block to one of the upper, lower, left and right neighboring blocks. Once he entered a block, the ground of this block would start to sink and disappear in the next second. He could not stay at one block for more than one second, nor could he move into a visited block. Can the poor doggie survive? Please help him. 
Input
The input consists of multiple test cases. The first line of each test case contains three integers N, M, and T (1 < N, M < 7; 0 < T < 50), which denote the sizes of the maze and the time at which the door will open, respectively. The next N lines give the maze layout, with each line containing M characters. A character is one of the following: 

'X': a block of wall, which the doggie cannot enter; 
'S': the start point of the doggie; 
'D': the Door; or 
'.': an empty block. 

The input is terminated with three 0's. This test case is not to be processed. 
Output
For each test case, print in one line "YES" if the doggie can survive, or "NO" otherwise. 
Sample Input
4 4 5
S.X.
..X.
..XD
....
3 4 5
S.X.
..X.
...D
0 0 0
Sample Output
NO
YES

解析:(1)统计X的个数ans,因为走一步用一秒,所以t秒就是t步,如果n * m- ans < t的话,可以到达的点的数量比走的步数少,则不可能到达出口。这个剪枝在这道题可以省掉很多时间(当然如果换一批测试数据效果应该就不一样了)。
(2)第二个是很关键的奇偶剪枝。
假设在某一时刻t,狗狗走到P(xi, yi),又记终点为D(x0, y0)。由P到D的路径可以分解为水平方向和竖直方向(类似于高中物理的位移的正交分解),就是说将P到D的每一条可行路径分解为从直线x = xi到达x = x0,和由直线y = yi到直线y = y0的两个分路径。现在考虑由x = xi到x = x0,当x0 - xi为偶数时,说明x0和xi的奇偶性相同,那么无论通过怎么样的路径由x = xi到x = x0,路径的步数总和必定为偶数(因为每走一步所处方位的x坐标奇偶性就变一次),不然不可能到达x0,,同理,当x0 - xi为奇数时,无论走什么路径,步数总和必为奇数。考查由xi到x0之后,yi到y0的情况不言而知。设由xi到x0的步数为tx,由yi到y0的步数为ty,则tx和ty的奇偶性分别与abs(xi - x0)和abs(yi - y0)的相同,所以总步数tx + ty的奇偶性和abs(xi - x0) + abs(yi - y0)的奇偶性相同。注意,总步数tx + ty实际上就是在P点时剩余的时间t。由此可知,由P到D的总步数,也就是剩余的时间t的奇偶性必定与abs(xi - x0) + abs(yi - y0)的奇偶性相同。不然就无法从P到达D。
(3)最短路径剪枝。
由某一点P(xi, yi)到终点D(x0, y0),最短路径恰恰是上面提到的abs(xi - x0) + abs(yi - y0),这也就是由P到D所需的最短时间,如果它大于当前剩余的时间,就不能到达D。


#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m;
int fx[4]={-1,1,0,0},fy[4]={0,0,-1,1};    //四个方位用来移动点。 
char s[10][10];   // 存放迷宫地图。 
struct point{
	int x,y;
}ss,e;      //记录起点和终点坐标。 
int jiou(int i,int j)
{
	return abs(i-e.y)+abs(j-e.x);   //奇偶校验,判断这个点有无到达终点的可能。 
}
bool dfs(int x,int y,int t)
{
	if(t==0) return 0;
	int a=jiou(x,y);
	if((a&1)!=(t&1)||a>t) return 0;    
	int xx,yy,i;
	for(i=0;i<4;i++)
	{
		xx=x+fx[i];
		yy=y+fy[i];
		if(xx>=0&&yy>=0&&xx<n&&yy<=m&&s[xx][yy]!='X'){
			if(s[xx][yy]=='D'&&t==1){       //因为是要求恰好在t时到达 ,t=1。 
				return 1;
			} 
			if(s[xx][yy]=='.'){
				s[xx][yy]='X';
				if(dfs(xx,yy,t-1)) return 1;
				s[xx][yy]='.';
			}
		}
	}
	return 0;
}
int main()
{
	int t;
	while(~scanf("%d%d%d",&n,&m,&t)&&(n||m||t)){
		int ans=1,i,j;
		for(i=0;i<n;i++)
		scanf("%s",s[i]);
		for(i=0;i<n;i++)
		for(j=0;j<m;j++){
			if(s[i][j]=='X'){
				ans++;  //记录X的个数。 
			}
			if(s[i][j]=='S'){
				s[i][j]='X';
				ss.x=j;
				ss.y=i;
			}
			else if(s[i][j]=='D'){
				e.x=j;
				e.y=i;
			}
		}
		if(n*m-ans<t||!dfs(ss.y,ss.x,t)) puts("NO");
		else puts("YES");
	}
}





2026 拉勾网:JA4+指纹绕过 + sign逆向 + 动态城市参数,月采集10万+数据实战 2026年拉勾网反爬技术全面升级,采用JA4+ TLS指纹识别、动态sign签名等多维度防护体系。本文提供工业级爬虫解决方案,通过curl_cffi模拟浏览器指纹、逆向sign加密算法、动态生成城市参数三大核心技术,实现高效稳定的数据采集。系统采用分层架构设计,包含任务调度、签名生成、多线程引擎等模块,单月可获取10万+条招聘数据。重点解析了JA4+指纹识别原理、传统方法的局限性,以及通过HMAC-SHA256算法逆向sign参数的完整过程。 阅读详情

相关推荐

Zynq7020实战:ARM Cortex-A9降频避坑指南(附温度对比测试)

本文详细介绍了如何在Zynq7020平台上对ARM Cortex-A9处理器进行降频优化,以降低功耗并提升系统稳定性。通过分析时钟架构、提供实战操作步骤和温度对比测试数据,帮助开发者有效避免降频过程中的常见问题,实现嵌入式系统的高效能耗管理。

root9的博客 206

Tempter of the Bone(详解)

The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone ...

聪明绝顶的你与即将秃头的我 4871

看完这篇爽文我终于学会了示波器(一)

示波器基础篇的介绍,希望对你有用,下次分享一下如何测试。

qq_45508321的博客 974

Tempter of the Bone(白骨的诱惑者)(dfs经典模板题) HDU - 1010

题目:Tempter of the Bone(白骨的诱惑者)中文大意 The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He realized that the bone was a trap, and he tr

R_711的博客 1159

机器视觉/将HIK海康面阵相机连接Halcon软件

本文简述了如何将海康面阵相机连接到Halcon软件中进行实时取图的过程。

Dahe.qu 4869

从零开始讲PCIe(8)——PCIe拓扑与组件

从软件角度来看,根复合体内部的总线结构会被认为是一个标准的PCI总线,尽管实际上可能并不是物理的PCI总线,但它被设计为对软件呈现为PCI拓扑的一部分,以保持与旧版PCI软件的兼容性。这是由于其使用了非常高的传输速度。无论是根复合体内部的总线,还是交换机的多个端口,系统会通过与PCI相似的方式将其呈现给软件,使得传统的PCI枚举和配置流程能够继续使用。总体而言,根复合体不仅在物理上位于PCIe拓扑的顶部,而且在逻辑上也是整个PCIe系统的控制中心,它与系统中的所有PCIe设备建立连接,协调它们之间的通信。

apple_53311083的博客 2991

Tempter of the Bone(DFS+剪枝)

Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 87885    Accepted Submission(s): 23909 Problem Description The

不会思考的机器 479

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战

【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。

m0_67505153的博客 188

Tempter of the Bone(骨头的诱惑导致我一直用广搜)

Problem DescriptionThe doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, and the doggie could feel the ground sinking. He real...

诗鸩的博客 846

RagFlow专题三、RagFlow 关键技术(向量数据库、文档分块、Prompt 设计与召回排序优化)

FAISS 是由 Meta(Facebook)开源的高效向量检索库,适用于大规模向量搜索任务。,并了解了如何通过 RagFlow 机制优化信息检索和生成质量。(FAISS、Milvus、ES)用于高效存储和检索语义向量。提高 LLM 生成效果,增强 RagFlow 任务质量。(分块)策略,将文档拆分成更小的片段,提高检索效率。提高检索精准度,避免文本过长导致信息丢失。提升检索结果的相关性,提高生成质量。当多个检索结果被返回时,我们需要一个。在前一篇文章中,我们详细探讨了。在 RagFlow 任务中,

xiaoqi270620903的专栏 3042

FX5U PLC运动控制库安装(PLCopen Motion Control FB参考)

下面我们介绍三菱FX5U PLC的运动控制库PLCopen Motion Control FB的安装。

RXXW_Dor的博客 1534

Tempter of the Bone (剪枝)

Tempter of the Bone Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 62   Accepted Submission(s) : 15 Font: Times New Roman | Verdana | Georgia...

I_O_fly的博客 297

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

HDU1008——Elevator,HDU1009——FatMouse‘ Trade,HDU1010——Tempter of the Bone

使用曼哈顿距离作为预估剩余步数的方法,如果剩余步数不足以到达终点,或者剩余步数与曼哈顿距离的差值的奇偶性不同(意味着无法刚好在剩余时间内到达),则直接返回,避免不必要的递归。如果相邻格子在迷宫范围内,并且是可以通行的或为终点,则进行递归调用,并将剩余时间减少1。:首先,我们需要计算出每个房间的单位成本效益,即每磅猫粮能换取多少磅JavaBeans。接着,找出起点和终点的位置,并调用。:从单位成本效益最高的房间开始,尝试用完所有M磅的猫粮。:在交易的过程中,累计可以获得的JavaBeans总量。

u014114223的博客 1468

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Tempter of the Bone II HDU - 2128

Tempter of the Bone II HDU - 2128

weixin_29216119的博客 902

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

hdu 1010 Tempter of the Bone

hdu   1010   Tempter of the Bone          题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 DFS 题目大意:狗走迷宫,给出地图,地图有四种标记,分别是'X'--墙;'.'--平地;'S'--起始点;'D'--终止点。终止点door是个门,在t时刻打开,狗在t时刻到达D点,它就出去了,问狗有没有出去

slicer的技术交流栈 649

HDU-1010-Tempter of the Bone

HDU-1010-Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 给这题折腾了半天啊,刚开始用BFS写的,总是WA,后来发现这题要求在给定的时间点到达,不能早,也不能迟,而BFS每次求出的是最短时间,不合题意,于是转用DFS,剪枝的方法是参考HDU的PPT写的,居然还要考虑奇偶性 可以把map看成这样:

菜鸟的程序人生 960

HDU-1010 Tempter of the Bone

搜索 HDU-1010 Tempter of the Bone 题目链接:杭电1010 题目大意:小狗要逃生 只能四个方向走 且走过的地方不能再走 还只能在特定的时间逃生 不能多不能少 解题思路:正常的DFS 想的点要多一点 超时了三次 超时要return 到地方没到时间要return 最最重要的是走过的地方要标记为墙 防止出现出口堵住还瞎探索浪费时间的情况 注意这点的分支行不通时要将点还原 代...

鱼头的水题之路 218

HDU-1010Tempter of the Bone(dfs+奇偶剪枝)

Tempter of the Bone 题目链接 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 157407 Accepted Submission(s): 41882 Problem Description The doggie...

孤风的博客 587

hdu 1010 Tempter of the Bone(dfs+剪枝)

题目链接:hdu 1010 Tempter of the Bone(dfs+剪枝) 题意:狗狗从S出发,要在正好t秒的时候到达D,每一块地只能走一次,X代表墙不能走,问能否到达 思路:深搜,但是需要剪枝,每走一步,判断能否在剩下的时间中不考虑墙通过最短的路到达出口,若不能直接返回。 #include&lt;cstdio&gt; #include&lt;cstring&gt; #incl...

yz467796454的博客 294

HDU 1010 Tempter of the Bone (DFS+奇偶剪枝)

奇偶剪枝得到新技能

n-1 743

Tempter of the Bone(DFS)

HDU1010 Tempter of the Bone 没有剪枝,超时 #include &lt;iostream&gt; #include&lt;cstdio&gt; #include&lt;string.h&gt; using namespace std; char map[10][10]; int flag,step; int d[4][2]={0,1,1,0,0,-1,-1,0}; ...

薄荷糖 147
上一篇: 欧拉--HDU - 1286
下一篇: Fox And Two Dots
☞十一
博客等级 码龄9年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值