P1228 地毯填补问题

地毯填补问题

题目描述

相传在一个古老的阿拉伯国家里,有一座宫殿。宫殿里有个四四方方的格子迷宫,国王选择驸马的方法非常特殊,也非常简单:公主就站在其中一个方格子上,只要谁能用地毯将除公主站立的地方外的所有地方盖上,美丽漂亮聪慧的公主就是他的人了。公主这一个方格不能用地毯盖住,毯子的形状有所规定,只能有四种选择(如图):

并且每一方格只能用一层地毯,迷宫的大小为 2 k × 2 k 2^k\times 2^k 2k×2k 的方形。当然,也不能让公主无限制的在那儿等,对吧?由于你使用的是计算机,所以实现时间为 1 1 1 秒。

输入格式

输入文件共 2 2 2 行。

第一行一个整数 k k k,即给定被填补迷宫的大小为 2 k × 2 k 2^k\times 2^k 2k×2k 0 < k ≤ 10 0\lt k\leq 10 0<k10);
第二行两个整数 x , y x,y x,y,即给出公主所在方格的坐标( x x x 为行坐标, y y y 为列坐标), x x x y y y 之间有一个空格隔开。

输出格式

将迷宫填补完整的方案:每一补(行)为 x y c x\ y\ c x y c x , y x,y x,y 为毯子拐角的行坐标和列坐标, c c c 为使用毯子的形状,具体见上面的图 1 1 1,毯子形状分别用 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4 表示, x , y , c x,y,c x,y,c 之间用一个空格隔开)。

样例 #1

样例输入 #1

3                          
3 3

样例输出 #1

5 5 1
2 2 4
1 1 4
1 4 3
4 1 2
4 4 1
2 7 3
1 5 4
1 8 3
3 6 3
4 8 1
7 2 2
5 1 4
6 3 2
8 1 2
8 4 1
7 7 1
6 6 1
5 8 3
8 5 2
8 8 1

提示

spj 报错代码解释:

  1. c c c 越界;
  2. x , y x,y x,y 越界;
  3. ( x , y ) (x,y) (x,y) 位置已被覆盖;
  4. ( x , y ) (x,y) (x,y) 位置从未被覆盖。

upd 2023.8.19 \text{upd 2023.8.19} upd 2023.8.19:增加样例解释。

样例解释

详解

直接dfs过于恐怖,所以经思考后选择分治:
可以每次操作在分成四份的方格中进行
将填充后的格子视为新的“公主”
判断“公主”所在方位,将中间的格子填充好
最后将问题化为子问题——44格子中的简单问题
过程rt
第一次划分
因为公主位于右上角
所以在中间放缺口朝右上角的地毯
在这里插入图片描述
再处理右上角
第二次划分
再一次划分时就出现了4
4的子问题
第三次划分

ACcode

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define mv(x) (1<<(x))
void solve(int x,int y,int a,int b,int l)//递归分治
{if(l==1) return;if(x-a<=l/2-1&&y-b<=l/2-1)//左上{cout<<a+l/2<<" "<<b+l/2<<endl;solve(x,y,a,b,l/2);solve(a+l/2-1,b+l/2,a,b+l/2,l/2);solve(a+l/2,b+l/2-1,a+l/2,b,l/2);solve(a+l/2,b+l/2,a+l/2,b+l/2,l/2);}else if(x-a<=l/2-1&&y-b>l/2-1)//右上{cout<<a+l/2<<" "<<b+l/2-1<<endl;solve(a+l/2-1,b+l/2-1,a,b,l/2);solve(x,y,a,b+l/2,l/2);solve(a+l/2,b+l/2-1,a+l/2,b,l/2);solve(a+l/2,b+l/2,a+l/2,b+l/2,l/2);}else if(x-a>l/2-1&&y-b<=l/2-1)//左下{cout<<a+l/2-1<<" "<<b+l/2<<endl;solve(a+l/2-1,b+l/2-1,a,b,l/2);solve(a+l/2-1,b+l/2,a,b+l/2,l/2);solve(x,y,a+l/2,b,l/2);solve(a+l/2,b+l/2,a+l/2,b+l/2,l/2);}else//右下{cout<<a+l/2-1<<" "<<b+l/2-1<<endl;solve(a+l/2-1,b+l/2-1,a,b,l/2);solve(a+l/2-1,b+l/2,a,b+l/2,l/2);solve(a+l/2,b+l/2-1,a+l/2,b,l/2);solve(x,y,a+l/2,b+l/2,l/2);}
}
signed main()
{cin>>k>>x>>y;len=mv(k);solve(x,y,1,1,len);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/444330.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务攻防-开发组件安全Solr搜索Shiro身份Log4j日志本地CVE环境复现

知识点&#xff1a; 1、J2EE-组件安全-Solr-全文搜索 2、J2EE-组件安全-Shiro-身份验证 3、J2EE-组件安全-Log4J-日志记录 章节点&#xff1a; 1、目标判断-端口扫描&组合判断&信息来源 2、安全问题-配置不当&CVE漏洞&弱口令爆破 3、复现对象-数据库&中间…

idea mapstruct 变量名提示

安装插件 MapStruct support 修改提示快捷键 提示

THREE.JS动态场景开发实战【赛博朋克】

在本教程中&#xff0c;我们将探索如何创建类似 Three.js 的赛博朋克场景&#xff0c;灵感来自 Pipe 网站上的背景动画。 我们将指导你完成使用 Three.js 编码动态场景的过程&#xff0c;包括后处理效果和动态光照&#xff0c;所有这些都不需要任何着色器专业知识。 我用这个场…

猫头虎博主第10期赠书活动:《写给大家看的Midjourney设计书》

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

RT-DETR算法优化改进:轻量级原创自研 | 一种多尺度的GSConv卷积变体,轻量化的同时能够实现涨点

💡💡💡本文独家改进:基于GSConv提出了一种Multi-Scale Ghost Conv的卷积变体,保证轻量级的同时实现涨点; RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375.html ✨✨✨魔改创新RT-DETR 🚀🚀🚀引入前沿顶会创新(CVPR2023,ICC…

网络协议 TCP协议

网络协议 TCP协议 文章目录 网络协议 TCP协议1. TCP协议段格式2. 可靠传输保障机制2.1 确认应答2.2 超时重传 3. 连接保障机制3.1 三次握手&#xff08;建立连接&#xff09;3.2 四次挥手&#xff08;断开连接&#xff09;3.3 TCP状态转换过程 4. 传输效率保障机制4.1 滑动窗口…

【C++干货基地】C++引用与指针的区别:深入理解两者特性及选择正确应用场景

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

AGV|RGV|AMR激光导航避障雷达传感器SE-0522安全注意事项及功能说明

SE-0522激光导航避障雷达传感器&#xff0c;同型号包含SE-05225&#xff08;CNS-LS05I&#xff09;、SE-0526、SE-0533&#xff08;CNS-LS05C&#xff09;、SE-0535、SE-1022、SE-1026、SE-1033、SE-1035等&#xff0c;广泛应用于AGV|RGV|AMR|无人叉车|移动机器人导航、避障、安…

Transformer 自然语言处理(二)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第五章&#xff1a;文本生成 基于 Transformer 的语言模型最令人不安的特点之一是它们生成的文本几乎无法与人类写的文本区分开。一个著名的例子是 Ope…

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED 更新你的系统时间【命令 date】。确保你的计算机上的时间和时区设置正确&#xff0c;并且与当前时间相符。 清除你的 npm 缓存。使用 npm cache clean --force 命令清除你的 npm 缓存&#xff0c;关闭ssl验证&#xff0c;并重新运…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成、配置宝塔面板实现持续部署(其三)

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 建议大家按以下顺序看 前端自动化&#xff08;其一&#xff09;部署gitlab 前端自动化&#xff08;其二&#xff0…

Wireshark网络协议分析 - UDP协议

在我的博客阅读本文 文章目录 1. 基础2. 实战2.1. 用Go写一个简单的UDP服务器与客户端2.2. Wireshark抓包分析 3. UDP与TCP的区别4. 参考资料 1. 基础 UDP包的数据结构&#xff1a; 2. 实战 2.1. 用Go写一个简单的UDP服务器与客户端 我们这里使用Golang写了一个简单的9830端…