SD省队集训2019Day11之“loopy”
loopy
题目描述
提交答案题。
你要在从网格图的边上选出一些边使得这些边形成一个简单环。这个网格图的有些格子中的数字,数字表示这个格子周围有几条边被选中了。数据保证解是唯一的。
做法(技巧)
- “0”的周围没有线段:
当您解决一道数回谜题时,确定哪些点之间不能连接也是同样重要的。最好的方法是将这些不可连接的点之间用X标记。让我们看一下例子中位于中间的“0”。“0”意味着它的四周围均没有线段,因此我们可以将其周围标记4个X,及提示排除了4条线段。该例中还存在一个角落中的“0”以及边上的“0”。在这俩个“0”中,这俩个额外的X是为了避免隔离线段的产生。
- 相邻的“0”和“3”:
下面的例子中,“3”的上面有了一个X,那么只有一种方式将数字3包围:如图所示,连接左侧,底部以及右侧的线段。现在我们用俩条附加线段拓展这个环路,一条在左侧,一条在右侧,因为只有这样一种方式可以延续该回路。最终,我们可以在“3”的拐角处标记4个X,因为如果在这些地方划线,将会产生分叉(或者交叉),与数回的游戏规则不符。
- 对角上的“0”和“3”:
“3”和“0”如若对角相邻,将会构成数回谜题的另外一个可应用起手技巧的条件。在下面的例子中,这些灰线显示出仅有的俩种可能。其他的方式都会在随后导致矛盾。因为这其中的俩条线段的对应位置有所重叠,我们可以确定其肯定存在于谜题的回路中。
- 俩个相邻的“3”:
数回谜题中,当有俩个“3”相邻时,我们只能得到俩种解,如下面例子中灰线所示。任何其他的连线方式将会立刻导致矛盾的产生。因为这3条红色线段的对应位置重叠,我们可以确定其肯定存在于谜题的回路中。我们还可以看到,无论我们最后如何连接,该回路终将在俩个“3”间弯曲而过。这也意味着我们可以标记另外的俩个X。这个技巧通用于其他数量的相邻“3”情况。
- 对角上的俩个“3”:
当我们遇见对角为“3”的情况时,我们会有一些连接回路的方式,而其中一个就是下图灰线所示。然而,不管我们如何连接回路,红线都将会出现在回路中。为了避免交叉和分叉,我们还需标记4个X。排除这些线段对于后面的解题非常重要。
- 角落上的任意数字:
在角落中的提示数字总是可以帮助我们迅速找到一些起手线索。角落的“0”是相对简单的情况而且已经在起手技巧中提过。角落的“1”需要放置俩个X,因为该区域不可能只划一条线。角落的“2”有俩种划线方式,但是红圈圈起的点都将会被连接到,因此红线是该回路的一段。最后,角落的“3”有俩种回路连接的方式,而红线是它们的重叠区域,必将出现在回路中。
基本技巧
下一步,我们需要在已经部分被解出的线段上继续解题。一些情况下,因为只有唯一的候选连接方式,解题会变得简单而迅速,而其他情况中,我们会面对不只一个的候选连接方式,我们有必要进行更多的逻辑分析。下面是一些应用基本技巧的例子:
- “3”的约束:
因为“3”是数回中最大的提示数字,因此每个“3”的周围都要有三条线段包围,通常与其相邻的线段或者提示数字会帮助我们确定“3”周围的线段摆放方式。在下面的谜题中,“3”位于谜题的底边,而其右侧已经有了X。类似于起手技巧中的“角落上的任意数字”,所有的可能性中,红线所示为回路必经线段。
- 回路到达“3”:
下面例子中,上方回路刚好到达了“3”的一角,而其有三个方向延续:左侧,下方和右侧。然而,围绕“3”的回路只有俩种可能的连接方式。红线所示为俩种可能方式的重叠区域,那么也就必将会出现在回路中。因此回路只能继续围绕“3”,而它不能岔路到左边并且我们需要将其标记为X,以将其连线排除。
- 回路到达“1”:
一些时候,回路以一种方式到达“1”,这也就迫使其只能沿着它的一边延续。下面的例子中,回路到达了谜题底边的“1”。因此,回路只能向上或者向右延续。这也就意味着,“1”右侧和顶上的线段可以排除,如图中我们用红色X标记。
- “2”的约束:
数回谜题中最有趣的情况发生在“2”周围的回路。通过仔细分析下面的谜题,我们可以得出“2”周围只能有俩种回路连接方式。然而,红圈圈出的俩个点都将被连接。这也就意味着回路只有一种可走线路,如下图红线所示。
- 避免孤立回路:
数回的规则中规定,回路只有一条路径。因此我们不能在解题中封闭较小的回路。下面的例子中,我们有三种方式延续谜题底部的回路:左侧,上边和右侧。然而,如果我们在左侧划线,一个孤立的回路将会产生而违背了谜题规则。因此,我们将其标记X排除。
高级技巧
上面所述的方法还不足以解决那些较困难的谜题。因此您需要更加高级的解题技巧去解决那些特殊的情况和有趣的逻辑布局。大多数的高级技巧都是基于递推法,结合向前看的假设技巧和随后的矛盾逻辑分析。下面是一些应用高级技巧解决特殊情况的例子。当然,当积累了足够多的数回经验后,您也会研发出您自己的数回技巧:
高级技巧 1:
如第一个图所示,如果在左侧角落的回路继续向上延续,随后的步骤中将会产生一个封闭的回路。因此这个回路不能向上延续,我们将其标记为X。
高级技巧2:
如第一个图所示,如果我们在“3”的旁边标记X,我们不得不在其周围添加三条线段,如第二个图所示,而这将使得右上角的“3”存在矛盾。因此,如最后一幅图所示,我们必须将X用线段取代。
高级技巧3:
如第一个图所示,如果右底角的回路向上延续,我们会被迫建立一个封闭回路,如第二个图所示。因此,回路不能向上延续,我们将其用X标记。
高级技巧4:
在第一个图中,红线表示右上角“2”的回路。我们不知道这个回路是将往谜题中心扩展还是往角落扩展,但是我们知道回路必将连接红圈所圈的点。如最后一幅图所示,这俩条红线必将是回路的一部分。
高级技巧5:
如第一个图所示,如果我们在“1”下方划线,我们不得不在其周围添加三个X,如第二个图所示。然而,这也会使得左上角的“3”存在矛盾。因此,我们应该将“1”下面用X取代线段,如最后一幅图所示。
高级技巧6:
在第一个图中,如果我们标记X,我们会使得右上角的“1”产生矛盾。无论我们如何连接,我们只要在“1”周围划线,我们都将划第二条线。因此,如最后一幅图所示,X应被线段代替。
转载于:https://www.cnblogs.com/water-lift/p/10993798.html
SD省队集训2019Day11之“loopy”相关推荐
- sd省队集训d1t1
还在学splay 就用splay a了一个题.. 全场rank5.. 码: #include<iostream> #include<cstdio> #include<ma ...
- [2018HN省队集训D8T1] 杀毒软件
[2018HN省队集训D8T1] 杀毒软件 题意 给定一个 \(m\) 个01串的字典以及一个长度为 \(n\) 的 01? 序列. 对这个序列进行 \(q\) 次操作, 修改某个位置的字符情况以及查 ...
- 2017FJ省队集训 游记
2017FJ省队集训 游记 又是一篇流水账 Day 1 今天是省队集训的第一天.早上骑车去八中,到的时候汗流太多浑身湿透被杨哥哥和runzhe2000 d了,一个说我去游泳了一个说我打球了...流完汗 ...
- NOI2018湖北省队集训Day4 T1 djq和MZ
题面: 得分情况: 40分,写了纯暴力. 正解: 其实O(nn−−√logn)O(nnlogn)O(n\sqrt{n}\log{n})的做法还挺好想的(然而我在考场上并没有想出来),分块莫队再用线段 ...
- FJ省队集训DAY4 T1
直接上题解 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<cstr ...
- FJ省队集训DAY5 T1
思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...
- FJ省队集训DAY3 T1
思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分. 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的 ...
- 省队集训Day3 tree
[题目描述] RHL 有一天看到 lmc 在玩一个游戏. "愚蠢的人类哟,what are you doing",RHL 说. "我在玩一个游戏.现在这里有一个有 n 个 ...
- [2018湖南省队集训] 6.28 T3 simulate
这道模拟题出的我毫无脾气2333 最重要的是先要发现操作顺序不影响最后的答案,也就是每次随便挑一个>=2的数进行操作最后总是可以得到同样的数列. (这个还不太难想qwq) 但是最骚的是接下来的模 ...
最新文章
- 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
- HDOJ1496 Equations【Hash】
- Software Version
- 强一致性、弱一致性、最终一致性
- java cstring_CString and char *
- 对存在过期 binlog 的 MySQL5.7 添加从服务器
- 经济应用数学基础二 线性代数 (第四版) 赵树嫄 编| 中国人大版 课后习题答案
- hough变换检测圆周_Hough变换检测圆(附:MATLAB程序)
- 3dB等波纹低通滤波器设计(HFSS)
- 增强版在线LEFSe分析和可视化鉴定标志性基因或物种
- nginx自动切割访问日志
- Win7下配置php运行环境
- 康奈尔大学对博士生的要求
- 记C#和C++混合开发的坑们
- No module named ‘quantopian‘
- TM1638的一些使用以及点亮数码管程序
- tf.nn.moments( )函数的使用
- Unity基础:图片根据文字内容自适应大小(ContentSizeFitter的使用小技巧)
- 支付宝支付(四):周期扣款-先签约后代扣场景
- Unity EvenTrigerer UI交互组件