1010 Tempter of the Bone

python基于语音识别的智能垃圾分类系统 大家好我是蓝天,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于语音识别的智能垃圾分类系统》毕业设计项目。项目源码以及部署相关请联系蓝天,文末附上联系信息。🎈作者:蓝天🎈🎈个人简介:精通 Java、Python、C#、C、C++ 等编程语言,同时对微信小程序、Php 和 Android 等技术也能熟练掌握,可为大家提供全面的技术支持与交流。我拥有丰富的成品 Java、Python、C# 毕业设计项目经验,能够为学生提供各类个性化的开题框架及实际运作方案。🎈。 阅读详情

Tempter of the Bone

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 39780    Accepted Submission(s): 10761


原题链接: 点击打开链接
Problem Description
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
 

Author
ZHANG, Zheng
 

Source
 

Recommend
JGShining
 
这题是求在规定时间到达出口是否可能,注意不是“规定时间内”!
使用DFS是显然的,当然网上也有人用BFS搞出来了,不过主流还是深搜。这题的关键在于剪枝,不然会超时。剪枝有三个方面:
(1)统计X的个数cnt,因为走一步用一秒,所以T秒就是T步,如果N * M - cnt < 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。

这题大概还有一个很恶心的地方是,测试数据可能会有多余的空格或换行使得就算用scanf("%c", &c)吃掉一个换行还是会WA,我原来一直WA,拿来一个AC的程序测试了很多例子结果都是ok的,跟AC程序唯一的不同就是它把迷宫的每一行当成字符串输入,这样就能忽略每一行后多余的空格和换行符,而我的只是用scanf吃掉每一行的换行符。一改输入方式立马AC。

#include <iostream>
using namespace std;
const int size=10;
int flag;	//标记有多少位访问过
int num;	//需要调多少格
int start,end;//初始位置
bool findway(char maze[][size],int visited[][size],int i,int j);
bool betrue(int visited[][size]);
int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	char maze[size][size];
	int visited[size][size];
	int n,m,t,i,j,si,sj;
	while (cin>>n>>m>>t&&(n!=0||m!=0||t!=0))
	{
		flag=0;
		for (i=0;i<size;++i)
			for (j=0;j<size;++j)
			{
				maze[i][j]=0;
				visited[i][j]=0;
			}
		num=t;
		for (i=0;i<n;++i)
			for (j=0;j<m;++j)
			{
				cin>>maze[i+1][j+1];
				if (maze[i+1][j+1]=='S')
				{
					si=i+1;
					sj=j+1;
					visited[si][sj]=1;
				}
				if (maze[i+1][j+1]=='D')
				{
					start=i+1;
					end=j+1;
					visited[i+1][j+1]=2;
				}
			}
		if((abs(si-start)+abs(sj-end)-t)%2==0)
			findway(maze,visited,si,sj);
		if (flag==1)
			cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
	return 0;
}
bool findway(char maze[][size],int visited[][size],int i,int j)
{
	if (flag==1)
		return 1;
	if (visited[i][j+1]==2)
		betrue(visited);
	else if (visited[i][j+1]==0&&maze[i][j+1]!=0&&maze[i][j+1]!='X')
	{
		visited[i][j+1]=1;
		findway(maze,visited,i,j+1);
	}
	if (visited[i+1][j]==2)
		betrue(visited);
	else if(visited[i+1][j]!=1&&maze[i+1][j]!=0&&maze[i+1][j]!='X')
	{
		visited[i+1][j]=1;
		findway(maze,visited,i+1,j);
	}
	if (visited[i][j-1]==2)
		betrue(visited);
	else if(visited[i][j-1]!=1&&maze[i][j-1]!=0&&maze[i][j-1]!='X')
	{
		visited[i][j-1]=1;
		findway(maze,visited,i,j-1);
	}
	if (visited[i-1][j]==2)
		betrue(visited);
	else if(visited[i-1][j]!=1&&maze[i-1][j]!=0&&maze[i-1][j]!='X')
	{
		visited[i-1][j]=1;
		findway(maze,visited,i-1,j);
	}
	visited[i][j]=0;
	return 0;
}
bool betrue(int visited[][size])
{
	int num1=0;
	for (int i1=1;i1<size-1;++i1)
		for (int j1=1;j1<size-1;++j1)
		{
			if (visited[i1][j1]==1)
				num1++;
		}
	if (num==num1)
		flag=1;
	return 1;
}


YOLO11改进 - 卷积Conv | DEGConv(方向引导边缘门控卷积) : 空间分块、方向先验、轻量边缘增强 本文介绍了方向引导边缘门控卷积(DEGConv),一种专为增强边缘敏感度与方向感知能力设计的轻量级模块。该方法通过 Sobel 算子生成方向嵌入,结合条纹卷积提取水平与垂直边缘特征,并利用门控机制动态抑制背景噪声,从而精准捕捉细粒度结构。我们将 DEGConv 成功集成进 YOLO11,在 Backbone 的 SPPF 后及 Neck 的 P3、P4 分支中引入该模块以优化特征提取。实验证明,集成 DEGConv 的 YOLO11 在检测任务中表现优异,有效提升了模型对复杂边缘与方向特征的建模能力。 阅读详情

相关推荐

pwscf与wannier90 Hands-On实战训练(一)——费米面计算为例

系列文章目录 Quantum Espresso Hands-On实战训练(三)——DOS计算 文章目录系列文章目录计算过程pwscf直接得到等能面pwscf和wannier90得到等能面pwscf直接得到等能面1. scf2. nscf3. 后处理pwscf和wannier90得到等能面1. Kpoints2. scf3. nscf4. pw2wan及wannier90.x5. XCrySDen可视化 计算过程 pwscf直接得到等能面 pwscf和wannier90得到等能面 pwscf直接得到等能面

weixin_45973682的博客 5070

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

EDF Browser使用说明和技巧

edf browser使用说明和一些小技巧

Erhu_666的博客 8333

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

Ubuntu系统下USB无线网卡无法识别的解决方案

Realtek的USB设备可能是无线网卡、有线网卡、读卡器等,系统仅知道“这是Realtek的USB设备”,但不知道“如何将其作为无线网卡驱动”。通过以上步骤,RTL8812AU 芯片的 Edimax 无线网卡应能被 Ubuntu 识别并正常工作。Realtek等品牌的无线网卡可能被系统简单识别为"USB设备",但未匹配到对应的无线驱动,导致设备无法发挥网络功能。是系统识别了USB设备,却未正确加载无线网卡驱动。(前4位是厂商ID,后4位是产品ID),显示设备已识别,但网络管理工具无反应,

极地星辰 3464

基于OpenClaw的自动化文件管理与文档分类系统设计与实现

本文介绍了一种基于OpenClaw的自动化文件管理与文档分类系统。系统采用三层架构设计,包含数据层、逻辑层和应用层,核心组件涵盖文件扫描、处理、分类、移动等功能。技术选型上使用Python/FastAPI作为后端,结合PostgreSQL/Elasticsearch/MinIO存储方案,并整合scikit-learn/PyTorch等AI技术实现智能分类。系统实现了文件递归扫描、增量扫描、元数据提取等功能,通过文件哈希和修改时间检测变化。该方案能有效提升文件管理效率,实现文档的自动化分类与智能管理。

一键难忘的博客 755

HDU-1010 Tempter of the Bone

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

鱼头的水题之路 217

OpenCV实战系列——图像线条提取

基于内容的图像分析,需要从构成图像的像素集合中提取有意义的特征。轮廓、线条、区域等是基本的图像基元,可用于描述图像中包含的元素。本节将介绍如何提取重要的图像线条特征。

m0_58523831的博客 1万+

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

LVGL 拨盘菜单(Dial Menu)

h。

摸鱼专家 191

结构力学本构模型:复合材料模型:复合材料热力学行为技术教程_2024-08-07_06-54-53.Tex

热塑性复合材料是一种由热塑性树脂基体和增强纤维组成的复合材料。与热固性复合材料不同,热塑性复合材料在加热时可以软化,冷却时硬化,这一过程可以重复进行,因此它们具有可回收和可再加工的特性。热塑性树脂,如聚酰胺(尼龙)、聚碳酸酯、聚醚醚酮(PEEK)等,与碳纤维、玻璃纤维等增强材料结合,可以制备出具有高强度、高刚度和良好耐热性的复合材料。热粘弹性理论是研究材料在温度变化和时间依赖性载荷作用下的变形和应力响应。复合材料,由于其独特的微观结构,展现出复杂的热粘弹性行为。

808

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

题目:HDU1010 Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 161732Accepted Submission(s): 42908 Problem Descriptio...

CarreLiu 224

掌握RDMA核心:从同步构建到异步事件的连接艺术

本文深入解析RDMA编程中的双模式设计,揭示同步配置与异步事件机制的协作关系。第一部分阐述同步函数rdma_bind_addr和rdma_listen的本地化角色,强调它们仅完成本地端点配置。第二部分剖析异步事件模型,重点分析连接请求和建立事件的处理流程。通过完整生命周期序列图展示两种模式的交互过程,并提供错误处理、资源管理和性能调优的实用建议。文章指出,理解同步本地配置与异步网络响应这一责任划分,是掌握RDMA编程的关键所在。

数字人生 283

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

奇偶剪枝得到新技能

n-1 743

IDEA的使用指南

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

hdu_1010 Tempter of the Bone

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 分析:题意即为再规定的时间内从开始点走在结束点。

徵羽調_xiao賤的专栏 882

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

HDU.1010 Tempter of the Bone

文章目录一、题目解读1、原题2、分类3、题意4、输入输出格式5、数据范围二、题解参考1、总体思路2、思路①(1).分析(2).AC代码三、评价与后话1、评价2、奇偶剪枝0-1示图绘制代码(C++——EasyX)3、后话 一、题目解读 1、原题 HDU.1010 Tempter of the Bone 2、分类 回溯法 3、题意 给定一个N×MN \times MN×M的迷宫让一只狗去走,迷宫中有一...

God-Excious的博客 808

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

杭电1010-Tempter of the Bone

具体题目参照航电1010: #include <iostream> #include <cmath> using namespace std; char map[7][7]; bool mark[7][7]; int s_x, s_y, d_x, d_y; int N, M, T; int g_flag; int go[][2] = { 0, 1, ...

hzj445993234的博客 200

HDU 1010 Tempter of the Bone

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

晚风轻扬 282

【HDU】1010Tempter of the Bone【dfs+剪枝】

单纯用dfs会超时 要用剪枝优化 提供一组变态数据 6 6 37 S..... ...... ...... ...... ...... D..... NO #include&lt;bits/stdc++.h&gt; #include&lt;cstring&gt; using namespace std; struct node{ int x,y; }; int N,M,T; c...

以梦为马,诗酒趁年华的博客 138

hdu1010 Tempter of the Bone

Tempter of the Bone                                 ime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)                                             Total Submission(s)

just_for_your_smile的专栏 2万+

HDOJ 1010 Tempter of the Bone诱惑者的骨

2015年4月27日。 hdoj1010,题目大意给你N * M(1 明显的搜索,而且是深搜。但如果你不加剪枝估计是过不了。这个题有几个堪称神奇的剪枝。 剪枝1:如果‘.’个数比T小,那S一定不能到达D; 剪枝2:可以通过S,D(S是指深搜的过程中当前的位置)的位置算出S到D需要奇数步还是偶数步。假设S(i1,j1),D(i2,j2),那么abs(i1 - i2) +

程序人生写程序,又拿程序换酒钱。 889

hdu 1010 Tempter of the Bone[dfs]

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010

835

hdu 1010 Tempter of the Bone(bfs)

hdu 1010 Tempter of the Bone http://acm.hdu.edu.cn/showproblem.php?pid=1010 ProblemDescription Thedoggiefoundaboneinanancientmaze,whichfascinatedhimalot.However,whenhep...

diansitao5461的博客 199

HDU 1010 Tempter of the Bone

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

凌风 1359

杭电ACM 1010 Tempter of the Bone

杭电ACM 1010 Tempter of the Bone

菜鸟SimonHu的胡言乱语 615

HDU1010 Tempter of the Bone

HDU1010 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

退役的铜牌狗 307
上一篇: 1009 FatMouse' Trade
下一篇: 1013 Digital Roots
游刃有余则成
博客等级 码龄17年 24粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值