当时我队选择vp这一场,做不出M题,只能看A。
又一看逆十字没过,尝试了十多次还是过不了。
题意
一张
n
×
m
n\times m
n×m的方格图里有一些位置是墙,剩下的每个位置有一颗球。每当玩家按动上下左右的时候,所有的球都会向玩家所指示的方向跳一格,如果碰到墙则回到原位,若两球相遇则合并成一颗球。
玩家的目的就是把整个地图上的球合并成一个球。
南小鸟写了一个随机算法,随机按动上下左右四个键,持续
50000
50000
50000次。
现在你需要构造出一张
n
,
m
≤
20
n,m\leq 20
n,m≤20的地图把小鸟的算法叉掉。
将她的做法运行
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]);
}
做得我眼睛都花了。谢谢大家。