首页 > 编程语言 > 详细

2020算法设计竞赛

时间:2020-02-09 21:50:28      阅读:103      评论:0      收藏:0      [点我收藏+]

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

构造题

构造A题中的迷宫,要求方案数整好等于给定的k,可以构造一个二进制编码器,斜对角线上的方案数恰好是1,2,3,4,8,16,32...,用二进制可以拼出所有的数字,所以一定能造的出来。

技术分享图片

 

 如图所示,斜对角线的R对应位置是二进制数,然后只要这一位有的话就可以直接把他变成B。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int mod=1e9+7;
 4 int i,i0,n,m,ans,k;
 5 char mp[55][55];
 6 int main()
 7 {
 8     n=32,m=30;
 9     scanf("%d",&k);
10     mp[n][m]=B;
11     for(int i0=1;i0<=m;i0++)mp[1][i0]=(i0<=2)?B:R;
12     for(int i=2;i<=n-1;i++){
13         for(int i0=1;i0<=m;i0++){
14             if(i0<i-1)mp[i][i0]=D;
15             else if(i0<i+2)mp[i][i0]=B;
16             else mp[i][i0]=R;
17         }
18     }
19     for(int i0=1;i0<=m;i0++){
20         if(!(k&(1<<(i0-1)))) mp[i0+1][i0]=R;
21         mp[n][i0]=R;
22     }
23     printf("%d %d\n",n,m);
24     for(int i=1;i<=n;i++) printf("%s\n",mp[i]+1);
25     return 0;
26 }

 

2020算法设计竞赛

原文:https://www.cnblogs.com/pangbi/p/12288566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!