关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)

题目:


链接:https://ac.nowcoder.com/acm/contest/3004/B 来源:牛客网

题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为’R’,‘D’,'B’三种类型之一,'R’表示处于当前的格子时只能往右边走’D’表示处于当前的格子时只能往下边走,而’B’表示向右向下均可以走。

我们认为迷宫最左上角的坐标为(1,1),迷宫右下角的坐标为(n,m),除了每个格子有向右移动以及向下移动的限制之外,你也不能够走出迷宫的边界。

牛牛现在请你设计迷宫,但是要求你设计的迷宫符合他的要求,他要求你设计的迷宫从(1,1)节点移动到(n,m)节点不同的移动序列种类数目≡k%1e9+7。

请你构造出符合条件的DRB迷宫,但是要求你输出的迷宫的大小不超过50*50,具体输出格式见输出描述及样例。

如果存在多解你可以构造任意符合条件的迷宫,反之如果无解,请输出一行一个字符串"No solution"。

输入描述: 仅一个整数k,你需要构造一个DRB迷宫符合从左上走到右下的方案数≡k%1e9+7。 输出描述: 请你构造出符合条件的DRB迷宫,但是要求你输出的迷宫的大小不超过50*50。

第一行输出n,m两个整数,中间用空格隔开。 接下来n行,每行输出一个大小为m的字符串,字符串只能包含大写字母’D’,‘R’,‘B’。 如果存在多解你可以构造任意符合条件的迷宫,反之如果无解,请输出一行一个字符串"No solution"。 示例1 输入 复制 25 输出 复制 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB

≡为同余等号,意为等式两边在对模数取余后的结果相同。 本题为Special Judge类型,只要符合题目要求的答案均可通过。


答案很自♂由,但是很懵逼,我一开始也不会做这道题,琢磨了很久的题解,也没搞明白,具体因为什么没有搞明白,我觉得是因为图不够生动吧,不可能是因为我太菜的。
其实不需要太多话,这道题的核心就在一张图上了,就拿样例,25。


质朴的绘图工具,Excel。。。。
首先咱们看高亮部分,很容易看出,最中间一条是由B组成的,D在B上♂面,R在B下♂面,那么每一个B可以去右边和下面,而D向下传递,R向右传递,也就是每一个B可以由上一个B通过两条不同的路径传过来。
如图

来吧,巨丑无比的图,这张图调用了全新的软件 ps,半夜了,明天还要上课,懒得好好做图了,凑活看吧

可见,从左上角的B移动到右下角的B都是蓝黑两条路径,那么简单的乘法,第i行的B可以到达的方法就是2^i。那么从这个B迁移到下面的一个R 的方法数是一样的。
也就是说每一个R对应上面的B,两者的方法数是一样的。有没有二进制既视感?
接下来就该下面的D上场了。
突然发现上面图片有一个地方搞错了

应该是R4哈,别在意那些细节了。
下面的D有什么特色呢?全部都是D,方法数全部都只能向下传递,而且只有一种方法,他们不生产方法,只做方法数的搬运工。
但是问题来了,D上面都被R给覆盖了,R往右传递到了B关下面的D什么事呢?
这就是这道题的解法核心了。
如果把某个R变成B了,那是不是认为,它还是一个R,但是,把它2和下面的一列D组成的高速公路接通了,它的方法数能够原封不动的通过下面的D一直向下传递,直到到达图的最下方。
这样,就相当于在一个水管子上,另外开凿出来一个分叉,不影响原来的,只把分叉口的水另外接出来。既能维持原来的2^i关系不变,又能将当前点的方法数的值传递导出来,传递下去,接着:


轮到最下面的一行R了。
可见黄色部分,最后一个R和B的方法数,没有地方传递了,水管子断掉了,水也撒了。在最后一个B下面是一个R,再下面是一个D,那么最下面的R,不会接收到来自该点上方的方法数传递下来,只能接受到左侧的方法数传递过来。

这是我的程序用样例25构造出来的图,第1,4,5列的R变成了B,这正好是25的二进制表示11011。
那么第一列的B,将方法数1顺着一列的D传递下来,而第4,5列的B也同样,将8和16传递下来,其他列,由于R不具备向下传递的能力,所以清一色全是D。
那么传到最底下的R上,一个R接受上面的D传下来的1,第二个R接收左边传来的1和上面传下来的0,仍然是1,第3个还是1,直到第四个,接收左边的1和上面的8变成9,第五个变成25,一直往右传递,数值不在变化,那么,整个图最右下角的一个点,不正是输入的数字25吗?

压缩一下,就长这个亚子。最上面的一行代表每一个B对应的数字,下面的一行R,红色代表不向下传递,不连通,而R变成B,也就向下连通,变成蓝色。
最下面的一行就是底层的R,接受从左侧传来的数值和上方蓝色通道传来的数值,对数值求和继续向右传递。
我觉得我讲的应该够清晰了,再看不懂的是不是比我还菜了

关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)相关推荐

  1. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II

    2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...

  2. 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解

    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II B 牛牛的DRB迷宫II 输入: 25 输出: 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB 题解 由图求方案数,我们 ...

  3. 2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I

    2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I 题目描述 牛牛有一个n*m的迷宫,对于迷宫中的每个格子都为'R','D','B'三种类型之一,'R'表示处于当前的格子时只能往右边走'D'表示 ...

  4. 牛牛的DRB迷宫II(构造)

    题目链接 代码: #include<iostream> char ma[55][55]; using namespace std; const int mod=1e9+7; int mai ...

  5. 棋盘dp 牛牛的DRB迷宫I

    题目链接 如果当前字符为R,那么dp[i][j+1]=dp[i][j]+dp[i][j+1] 如果当前字符为D,那么dp[i+1][j]=d[i][j]+dp[i+1][j] 如果当前字符为B,那么两 ...

  6. 牛牛和DRB迷宫Ⅰ【动态规划】

    题目描述:原题链接 解法:动态规划 思路: 用二维数组存图,初始化到(1,1)点的方案书为1,每次递归判断两次,向左还是向上. #include<bits/stdc++.h>using n ...

  7. 【20200208】【lyk】牛牛的DRB迷宫

    题意 构造题.一个n*m的矩阵,每个格子可以是向右走(R).向下走(D)或者即可向右走也可向下走(B),求使从(1,1)走到(n,m)的不同走法mod1e9+7与k同余的图.n,m小于50,大小自定. ...

  8. 牛牛的DRB迷宫II

    分析 代码 #include <cstring> #include <algorithm> #include <iostream> #include <vec ...

  9. A: 牛牛的DRB迷宫I (dp)

    传送门 题意: 分析: 对于每个位置,看能不能从上,或者从左边到达,如果可以那就加上前面的方案数即可 代码: #include <iostream> #include <stdio. ...

最新文章

  1. python web开发框架flask_Python Web 开发框架,Flask 与 Django那个更好
  2. 当我们按下电源键,Android 究竟做了些什么?
  3. 谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
  4. Android5.1.1 - zygote中获取系统服务时抛出异常
  5. MYSQL 获取当前日期及日期格式以及非空处理
  6. Testng生成的测试报告乱码解决办法
  7. CF1543C. Need for Pink Slips
  8. shell编程题(一)
  9. C++ 函数需要有返回值,但非全分支return(RVO)
  10. UE4官方文档链接记录
  11. 城市规划CAD影像底图快速导入方法
  12. SecureCRT中文乱码解决方法
  13. 小白如何入门计算机编程?
  14. 用友NC单据UI基本代码示例
  15. 操作系统实验Ucore:Kernel_init(四)
  16. YTU OJ 3094: 善良的小乌龟
  17. 黑鹰ASP.NET教程
  18. dlink 备份文件_dlink基本配置命令
  19. 三王乱战孙宇晨背后:我们需要一场的区块链真理大辩论
  20. View UI中textarea字数统计不变问题

热门文章

  1. 用ES6中的模板字符串实现在字符串中添加变量和字符串换行
  2. 裁判文书android app逆向
  3. 闪购网站Gilt从Rails迁移到Scala
  4. 交换机和路由器的基本配置
  5. Python生成迷宫
  6. 从子页面获取父页面的值
  7. 磨金石教育是正规的吗?插画好学吗?学习插画有哪些小技巧?
  8. linux下ssd4k对齐,linux查看硬盘4K对齐方法
  9. 自然语言处理技术及处理框架学习
  10. 计算机作业我家乡的变化英语作文,家乡的变化 Changes in My Hometown