2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II
题目描述
牛牛有一个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。
输入
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的更多相关文章
- 2020牛客寒假算法基础集训营3 G.牛牛的Link Power II (树状数组维护前缀和)
https://ac.nowcoder.com/acm/contest/3004/G 发现每个“1”对于它本身位置产生的影响贡献为0,对前面的“1”有产生贡献,对后面的"1"也产生 ...
- 2020牛客寒假算法基础集训营3 - G. 牛牛的Link Power II(线段树)
题目链接:牛牛的Link Power II 题意:给你一个只含$0$和$1$的串,定义串的$Link$值为串中两个的$1$之间的距离的和,$(u,v)$和$(v,u)$被看认为是同一对,有$m$次操作 ...
- 2020牛客寒假算法基础集训营5 B.牛牛战队的比赛地 (二分/三分)
https://ac.nowcoder.com/acm/contest/3006/B 三分做法 #include<bits/stdc++.h> #define inf 0x3f3f3f3f ...
- 2020牛客寒假算法基础集训营2 J题可以回顾回顾
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 2020牛客寒假算法基础集训营4-F树上博弈
链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...
- 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 ...
- 2020牛客寒假算法基础集训营1 F-maki和tree
链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 2020牛客寒假算法基础集训营5 G街机争霸
题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...
随机推荐
- mysql使用的坑
一: mysql默认是安装记录的物理顺序取数据的,如果不加order by 排序,可能得不到预期的结果. (1) 获取 两个时间点的 id (很快) $sql = ‘select id from a ...
- NIO 与 零拷贝
零拷贝介绍 零拷贝是网络编程的关键, 很多性能优化都需要零拷贝. 在 Java程序中, 常用的零拷贝方式有m(memory)map[内存映射] 和 sendFile.它们在OS中又是怎样的设计? NI ...
- POJ - 3264 Balanced Lineup(线段树或RMQ)
题意:求区间最大值-最小值. 分析: 1.线段树 #include<cstdio> #include<cstring> #include<cstdlib> #inc ...
- Docker常用命令,Docker安装Nginx、Redis、Jenkins、tomcat、MySQL
常用命令 拉取镜像:docker pull xxx启动镜像:docker run --name xxx 8080:8080 -d xxx查看容器:docker ps xxx 停止容器:docker s ...
- (转)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)
有时候,当我们使用“mysql”.“mysqladmin”.“mysqldump”等命令管理数据库时,服务器抛出类似如下错误: 1 ERROR 2002 (HY000): Can't connect ...
- 如何将sql文件导入数据库
打开navicat.exe,点击打开数据库,右键-运行SQL文件,选中要运行的sql文件,确定后再点击表即可. 注意:此次改变后,源sql文件可以转移路径
- while循环和do-while循环语句
while 语句 条件表达式的结果是一个 boolean 值,如果为true,则执行循环体:如果为 false,循环就会结束. while 循环体是一个代码块,所以 while 循环是可以嵌套其他的语 ...
- Aspen安装过程报错总结
前几天一直帮朋友安装Aspen v11,因为之前的老版本总是报错,报错内容大概是证书过期了, 一开始朋友电脑上的老版本的Aspen 8卸载了,删除之前的数据库SqlServer 2012 ,然后重新安 ...
- Spark 调优
资源调优 (1). 在部署 spark 集群中指定资源分配的默认参数 在 spark 安装包的 conf 下的 spark-env.sh SPARK_WORKER_CORES SPARK_WORKER ...
- 基于Windows平台的Python多线程及多进程学习小结
python多线程及多进程对于不同平台有不同的工具(platform-specific tools),如os.fork仅在Unix上可用,而windows不可用,该文仅针对windows平台可用的工具 ...