Gym 102992A (2020南京站A)Ah, It‘s Yesterday Once More 神仙思路题

文章目录


当时我队选择vp这一场,做不出M题,只能看A。
又一看逆十字没过,尝试了十多次还是过不了。

题意

一张 n × m n\times m n×m的方格图里有一些位置是墙,剩下的每个位置有一颗球。每当玩家按动上下左右的时候,所有的球都会向玩家所指示的方向跳一格,如果碰到墙则回到原位,若两球相遇则合并成一颗球。
玩家的目的就是把整个地图上的球合并成一个球。
南小鸟写了一个随机算法,随机按动上下左右四个键,持续 50000 50000 50000次。
现在你需要构造出一张 n , m ≤ 20 n,m\leq 20 n,m20的地图把小鸟的算法叉掉。
将她的做法运行 500 500 500次,你的数据至少需要叉掉她的做法 125 125 125次则AC。
你所构造的数据里不能出现环,而且所有存在球的位置必须连通。

题解

我们尝试了十多种方法,但是最多只能叉掉 81 81 81次。
最后看了别人的做法想到斜着做,实在是比较难。

int main() {
  int n=20,m=20;
  printf("%d %d\n",n,m);
  char mp[25][25]={{"11011100011100011111"}
                  ,{"10110100110100110101"}
                  ,{"11101101101101101101"}
                  ,{"10011011011011011010"}
                  ,{"00110110110110110111"}
                  ,{"01101101101101101101"}
                  ,{"11011011011011011011"}
                  ,{"10110110110110110110"}
                  ,{"11101101101101101101"}
                  ,{"10011011011011011001"}
                  ,{"10110110110110110111"}
                  ,{"01101101101101101101"}
                  ,{"11011011011011011011"}
                  ,{"10110110110110110110"}
                  ,{"11101101101101101101"}
                  ,{"10011011011011011001"}
                  ,{"00110110110110110111"}
                  ,{"11101101101101101101"}
                  ,{"10011001011001011011"}
                  ,{"11110111110111110110"}};
  for (int i=0;i<n;++i) puts(mp[i]);
}

做得我眼睛都花了。谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值