ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

P1228 地毯填补问题题解

2021-07-20 08:33:37  阅读:227  来源: 互联网

标签:那么 递归 格子 题解 times 问题 特殊 填补 P1228


题目传递门

仔细读题,发现了一些明显的提示信息“四四方方”,"\(2^k\times 2^k\)" 等字样,很显然,这是暗示我们此题不必使用\(dfs\)深搜,可以使用分治+递归的办法。
四种地毯的形状:

首先考虑\(2\times 2\)的情况。假设这个特殊点在\((2,2)\),那么很明显正确的填法是这样的:

那么接下来就要扩大到\(4 \times 4\)了:

这时候,另外三个\(2\times 2\)的未上色格子就没有特殊点了,也就没法像一开始的\(2\times 2\)的格子做。那么可不可以给每个\(2\times 2\)的格子都增加一个特殊点呢?

答案很明显是可以的。只要在四个\(2\times 2\)的格子的正中间旁边的\(3\)个白色格子都填上同一种颜色,然后再分别处理三个\(2\times 2\)的格子就可以!

那么再分别处理三个\(2\times 2\)格子,得到

那么同理,当我们扩充到\(8\times 8\)的格子时候,也用同样的方法,现将中间点旁边的白点标记为特殊点。

然后同理。。。

那么就可以推出\(2^{10}\)大小的答案啦!

那么,如果要我们求\(2^{10}\)大小的答案,那么就首先找到它的中点,判断特殊点在那边,然后就往那边递归,就变成\(2^9\times 2^9\) 了,之后一直递归下去直到变成\(2\times 2\),然后就像上面说的一样慢慢染色输出啦!

既然思路已基本确定,要使用递归+分治的思路,那么递归的两个问题需要回答:

1、大问题和小问题需要一致,只是参数不同。

大问题与小问题基本一致,那么这个比较容易,就是\(2^k \times 2^k\)是大问题,需要把它一分为四,分别讨论子个子问题,就应该可以。

2、递归的出口是什么?

肯定要思考最小情况,比如\(1\)个的方格,这时就应该是公主所在的位置,也可以是\(4\)个的方格,这时一个是公主,其它三个是一个\(L\)型的地毯。

标签:那么,递归,格子,题解,times,问题,特殊,填补,P1228
来源: https://www.cnblogs.com/littlehb/p/15033104.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有