题目描述

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

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

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

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

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

输入描述:

仅一个整数k,你需要构造一个DRB迷宫符合从左上走到右下的方案数。

输出描述:

请你构造出符合条件的DRB迷宫,但是要求你输出的迷宫的大小不超过50*50。

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

输入

25

输出

5 5
RBBBR
BBBBB
BBBDB
BDBBB
RBBBB

传送门:

https://ac.nowcoder.com/acm/contest/3004/B

思路:

一道二进制的构造题。

可构造如果所示的简略图。图中对角线全为'B',对角线上面为'D',下面为’R‘,其他空白处填'R'。

k取模后小于1e9+7,所以方格大小为30*31.为什么是31列?为了方便后面的输出。

如果k(取模之后)的二进制下的第i位为1,那么就将该位对角线上面的’D‘变为'B',否则仍为'D'。

依次往下进行。最后若k(取模之后)的二进制下的第29位为0(方格中的第30行30列),则该方格填写’D‘,否则为’R‘。

代码:

 #include <stdio.h>
#include<string.h> char s[][];
int main()
{
memset(s, 'R', sizeof(s));
//30 行 31列
for(int i = ; i <= ; i++)
{
s[i][i] = 'B';
s[i][] = 'D';
s[i][] = '\0'; }
int k;
scanf("%d", &k);
for(int i = ; i <= ; i++)
{
s[i - ][i] = k & ( << (i - )) ? 'B' : 'D';
}
s[][] = k & ( << ) ? 'R' : 'D';
printf("30 31\n");
for(int i = ; i <= ; i++)
{
printf("%s\n", s[i] + );
} }

2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II的更多相关文章

  1. 2020牛客寒假算法基础集训营3 G.牛牛的Link Power II (树状数组维护前缀和)

    https://ac.nowcoder.com/acm/contest/3004/G 发现每个“1”对于它本身位置产生的影响贡献为0,对前面的“1”有产生贡献,对后面的"1"也产生 ...

  2. 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)

    题目链接:牛牛的Link Power II 题意:给你一个只含$0$和$1$的串,定义串的$Link$值为串中两个的$1$之间的距离的和,$(u,v)$和$(v,u)$被看认为是同一对,有$m$次操作 ...

  3. 2020牛客寒假算法基础集训营5 B.牛牛战队的比赛地 (二分/三分)

    https://ac.nowcoder.com/acm/contest/3006/B 三分做法 #include<bits/stdc++.h> #define inf 0x3f3f3f3f ...

  4. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  5. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  6. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  7. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  8. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

随机推荐

  1. android studio3.1 添加闪屏页面(启动欢迎界面)(例子简单无BUG)

    截图 启动页的 activity_splash.xml  我用了一张图片自己添加吧 <?xml version="1.0" encoding="utf-8" ...

  2. Linux服务器命令大全

    快捷提示键: table 查看文件夹:  ls , ls –all ,ls –l,ll 进入某个文件夹: cd usr/local 回到root 目录 : cd /root/ 回到根目录:cd / 回 ...

  3. go_http

    httpSvr // HandleFunc registers the handler function for the given pattern // in the DefaultServeMux ...

  4. C++面试常见问题——07容器和迭代器

    容器和迭代器 vector.list.deque #include<iostream> #include<vector> #include<deque> #incl ...

  5. [洛谷Luogu]P1803 线段覆盖问题

    贪心想法题解的各位dalaodalaodalao都讲得很清楚了,在下就提供一种桶排的做法吧. 因为给出数据范围 0≤ai<bi≤10000000≤ai<bi≤10000000≤ai< ...

  6. 069-PHP数组下标

    <?php $arr=array(98,'hello',67,'A',85,NULL); //定义一个数组 $x=0; //定义三个作为下标的变量 $y=3; $z=5; echo " ...

  7. IISHelper操作iis

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. 负载均衡与CDN简介

    负载均衡 负载均衡是高可用网络基础架构的的一个关键组成部分,有了负载均衡,我们通常可以将我们的应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站.应用.数据库或其他服务的性 ...

  9. poj 1330 Nearest Common Ancestors 求最近祖先节点

    Nearest Common Ancestors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 37386   Accept ...

  10. MyBatis从入门到精通(第3章):MyBatis注解方式的基本使用

    MyBatis 注解方式就是将 SQL 语句直接写在DAO层的接口上. 在黑马录制的2018年双元视频课:\08 SSM整合案例[企业权限管理系统]\07.订单操作  有使用MyBatis注解进行多表 ...