2022杭电多校第一场B题Dragon slayer

这篇具有很好参考价值的文章主要介绍了2022杭电多校第一场B题Dragon slayer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目链接Problem - 7139 (hdu.edu.cn)

数据范围为15,直接枚举所有墙的方案,然后看是否能搜索到终点,如果可以就更新ans

需要注意的是如何处理:起点终点坐标+0.5造成的下标为小数,这里把所有坐标都乘2来避免double类型的出现

代码如下:文章来源地址https://www.toymoban.com/news/detail-578608.html

#include<iostream>
#include<cstring>
using namespace std;

const int N = 15 * 2 + 5;

int map[N][N];
bool st[N][N];

int dx[4] = {0, -1, 1, 0}, dy[4] = {1, 0, 0, -1};
int xs, ys, xt, yt, k, ans, n, m;

struct wall
{
	int x1, y1, x2, y2;
}w[N];

void dfs(int x, int y, int cnt)
{
	st[x][y] = true;
	if (x == xt && y == yt)
	{
		ans = cnt;
		return;
	} 

	for (int i = 0; i < 4; i++)
	{
		int xc = dx[i] + x, yc = dy[i] + y;
		if (xc > 0 && yc > 0 && xc < (n * 2) && yc < (m * 2) && !st[xc][yc] && !map[xc][yc])
			dfs(xc, yc, cnt);
	}
}

int main()
{
	int t;
	scanf("%d", &t);
	
	while(t--)
	{
		ans = 0x3f3f3f3f;
		scanf("%d%d%d", &n, &m, &k);
		
		scanf("%d%d%d%d", &xs, &ys, &xt, &yt);
		
		xs *= 2, ys *= 2, xt *= 2, yt *= 2;
		xs += 1, ys += 1, xt += 1, yt += 1;
		
		for (int i = 0; i < k; i++)
		{
			int x1, x2, y1, y2;
			scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
			w[i] = {x1, y1, x2, y2};
		}
		
		for (int state = 0; state < 1 << k; state++)
		{
			memset(map, 0, sizeof map);
			memset(st, 0, sizeof st);
			int cnt = 0;
			
			for (int i = 0; i < k; i++)
			{
				if (state >> i & 1)
				{
					int x1 = w[i].x1, y1 = w[i].y1, x2 = w[i].x2, y2 = w[i].y2;
					if (x1 == x2)
					{
						if (y1 > y2) swap(y1, y2);
						
						for (int j = y1 * 2; j <= y2 * 2; j++)
							map[x1 * 2][j] = 1;
					}
					else
					{
						if (x1 > x2) swap(x1, x2);
						
						for (int j = x1 * 2; j <= x2 * 2; j++)
							map[j][y1 * 2] = 1;
					}
				}
				else cnt++;
			}
			
			if (ans < cnt) continue;
			dfs(xs, ys, cnt);
		}
		
		printf("%d\n", ans);
	}
	
	return 0;
}

到了这里,关于2022杭电多校第一场B题Dragon slayer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 23.7.25 杭电暑期多校3部分题解

    题目大意 你有一个长度为 n n n 的序列,你每次可以向一个栈内放一个数,如果栈不为空并且栈顶的数大于你放的数,那么你放的数会变成栈顶的数再放入,问当栈的大小为 1 1 1 到 n n n 时分别有几种情况 解题思路 考虑dp, f i , j f_{i,j} f i , j ​ 表示放了 i i i 个数,最大的数

    2024年02月15日
    浏览(32)
  • 题解 | #1005.List Reshape# 2023杭电暑期多校9

    签到题 按一定格式给定一个纯数字一维数组,按给定格式输出成二维数组。 读入初始数组字符串,将每个数字分离,按要求输出即可 参考代码为已AC代码主干,其中部分功能需读者自行实现

    2024年02月12日
    浏览(33)
  • 2022百度之星第一场初赛

    题目描述 题目思路 题目代码 2022百度之星第一场初赛题解

    2024年02月15日
    浏览(30)
  • 《蓝桥杯真题》:2021单片机省赛第一场(第十二 / 12届第一场)(另一种代码风格)

    注意: 代码实现方面 : ①注意控制温度参数temp_para范围 ②DAC输出时,注意写入的数字IIC_SendByte(temp)中temp范围在 0~255 ; 源文件修改方面 : ①官方给的iic.h中使用的时C51的头文件\\\"reg52.h\\\",我们需要 修改为 对应的15系列 头文件\\\"STC15F2K60S2.h\\\" ,这样才可以使用其中的一些特殊位寄

    2023年04月08日
    浏览(33)
  • 蓝桥杯 第一场算法双周赛题解(前五题)

    题目链接在此😁:第 1 场算法双周赛 - 蓝桥云课 为什么只有前5道题的题解呢?(懂的都懂~🤐) 考察:简单逻辑判断 问题描述 小蓝和小桥玩斗地主,小蓝只剩四张牌了,他想知道是否是“三带一”牌型。 所胃三带一”牌型,即四张手牌中,有三张牌一样,另外一张不与其

    2024年02月08日
    浏览(37)
  • 「蓝桥·算法双周赛」第一场公开赛【待补题填坑】

    给定四个字符,判断是否其中有三个相同,另一个与他们不同  二叉树性质问题,不了解二叉树也完全可以做。 要注意的是每次都从第一行的第一个点开始走,给一个字符串按照它走,输出最后的结果就行。 往左走坐标就变成了2*pos-1,往右就变成了2*pos 画个树理解一下就好

    2024年02月07日
    浏览(42)
  • AtCoder Beginner Contest 292 (A - E) 记录第一场ABC

    本来晚上在打Acwing周赛,最后一题Trie想不出来咋写,看群里有人说ABC要开始了,想着没打过ABC就去报了一下,感觉难度大概是cf的Div3到Div4之间吧,总共写了五个题,E题想复杂了快结束才交过。总的来说手速很重要。 题意:给一个字符串,要求把小写字母改成大写。 分析:

    2023年04月19日
    浏览(24)
  • 【蓝桥杯嵌入式】第十四届蓝桥杯嵌入式省赛[第一场]程序设计题以及详细题解

      今年的第一场比赛绝对np,官方将串口直接省掉了,将其替换成很多小功能,如:切换计时、频率均匀变化、锁机制等等,总的来说本届赛题的难度提升了不少。   本届试题需要用到的功能模块有 LCD 、 LED 、 按键 、 定时器输入捕获 、 定时器PWM输出 、 ADC获取 ,虽然这

    2023年04月17日
    浏览(46)
  • 第十二届蓝桥杯嵌入式省赛第一场真题(基于HAL库的巨简代码+超级详解)

    相关说明: 开发板:CT117E-M4(STM32G431RBT6) 开发环境: CubeMX+Keil5 涉及题目:第十二届蓝桥杯嵌入式省赛第一场真题 技巧:字符串比较 、字符串数组转移提取、for和return搭配使用、goto语句、利用%c和%s打印 CubeMX配置、主要函数代码及说明: 1.使能外部高速时钟: 2.配置时钟树:

    2023年04月11日
    浏览(40)
  • [蓝桥杯嵌入式]STM32G431——第十二届第一场省赛停车计费系统真题及程序设计代码详解

    最近,我报名了今年的蓝桥杯嵌入式比赛,为此刷了一下以往的真题。以下是我对十二届蓝桥杯省赛真题的一些思路和心得,还有一些具体代码的实现。 1、相关模块 第十二届比赛主要用到的模块包括:LED、KEY、LCD、TIM、USART 2、重难点分析 这道题主要目的是做一个停车管理

    2024年01月18日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包