编程题:DFS/动态规划
$$Mirko$$得到了一个新手机作为生日礼物!和现在的孩子一样,他很快就下载了所有流行的手机游戏,包括《$$Jetpack Joyride$$》。
在游戏中,主角$$Barry$$跑过一个由$$10$$行和$$N$$列大小相同的正方形组成的区域。最初,$$Barry$$位于正方形的中心,在左下角。$$Barry$$一直以每秒一平方的速度向右跑。此外,他必须避开途中的障碍。
当$$Mirko$$按下手机屏幕时,$$Barry$$打开他的超级特殊喷气背包,开始以每秒$$1$$平方秒的速度上升(仍然向右移动,现在以对角线$$45$$度向上移动,直到他到达天花板,他继续向右移动,直到$$Mirko$$松开屏幕)。当$$Mirko$$ 松开手机屏幕时,$$Barry$$开始以每秒一平方的速度下降(现在再次对角线移动,但这次是面朝下,直到他到达地面,这时他将继续向右移动)。
$$Mirko$$最近才开始玩游戏,他仍然不太擅长。他在$$YouTube$$上看到有人通过跨越所有$$N$$列完成了游戏,所以他向你寻求帮助。他会给你游戏中的场地布局,而你必须输出他为了获胜所采取的行动。
### 输入格式:
第一行输入包含整数$$N(1≤N≤10 5)$$,字段的大小。
每$$10$$行包含$$N$$个字符“$$.$$”和“$$X$$”,即游戏中的场地布局。
字符“$$X$$”表示障碍,“$$.$$”适宜步行的字段。
### 输出格式:
结果的第一行必须包含整数$$P(0≤P≤5⋅10 4)$$,即$$Mirko$$的移动次数。在下面的$$P$$中行,输出任意一系列的$$P$$步,每一个都在自己的行中,这样它就解决了任务中的$$Mirko$$问题。移动由两个整数$$ti$$和$$xi$$决定,其中$$ti$$表示$$Mirko$$必须按下屏幕的第二次,而$$xi$$表示他需要按下屏幕多长时间。
一系列的变动必须按时间顺序排列。换句话说,它必须保持$$ti+ xi≤ti+1$$。此外,在游戏结束后不应该开始任何移动,$$t i < N$$。输入数据将是这样的,一个解决方案肯定会存在。
### 输入样例1:
in
11
.....XX...X
....XX...XX
...XX...XX.
...........
....XXX....
...........
.....X.....
....XX...X.
...XX...XX.
...X...XX..
### 输出样例1:
out
2 1 4 7 12
### 输入样例2:
in
20
X..................X
.X................X.
..X..............X..
...X............X...
....X..........X....
.....X........X.....
......X......X......
.......X....X.......
........X..X........
.........XX.........
### 输出样例2:
out
1 8 10
答案:若无答案欢迎评论
在游戏中,主角$$Barry$$跑过一个由$$10$$行和$$N$$列大小相同的正方形组成的区域。最初,$$Barry$$位于正方形的中心,在左下角。$$Barry$$一直以每秒一平方的速度向右跑。此外,他必须避开途中的障碍。
当$$Mirko$$按下手机屏幕时,$$Barry$$打开他的超级特殊喷气背包,开始以每秒$$1$$平方秒的速度上升(仍然向右移动,现在以对角线$$45$$度向上移动,直到他到达天花板,他继续向右移动,直到$$Mirko$$松开屏幕)。当$$Mirko$$ 松开手机屏幕时,$$Barry$$开始以每秒一平方的速度下降(现在再次对角线移动,但这次是面朝下,直到他到达地面,这时他将继续向右移动)。
$$Mirko$$最近才开始玩游戏,他仍然不太擅长。他在$$YouTube$$上看到有人通过跨越所有$$N$$列完成了游戏,所以他向你寻求帮助。他会给你游戏中的场地布局,而你必须输出他为了获胜所采取的行动。
### 输入格式:
第一行输入包含整数$$N(1≤N≤10 5)$$,字段的大小。
每$$10$$行包含$$N$$个字符“$$.$$”和“$$X$$”,即游戏中的场地布局。
字符“$$X$$”表示障碍,“$$.$$”适宜步行的字段。
### 输出格式:
结果的第一行必须包含整数$$P(0≤P≤5⋅10 4)$$,即$$Mirko$$的移动次数。在下面的$$P$$中行,输出任意一系列的$$P$$步,每一个都在自己的行中,这样它就解决了任务中的$$Mirko$$问题。移动由两个整数$$ti$$和$$xi$$决定,其中$$ti$$表示$$Mirko$$必须按下屏幕的第二次,而$$xi$$表示他需要按下屏幕多长时间。
一系列的变动必须按时间顺序排列。换句话说,它必须保持$$ti+ xi≤ti+1$$。此外,在游戏结束后不应该开始任何移动,$$t i < N$$。输入数据将是这样的,一个解决方案肯定会存在。
### 输入样例1:
in
11
.....XX...X
....XX...XX
...XX...XX.
...........
....XXX....
...........
.....X.....
....XX...X.
...XX...XX.
...X...XX..
### 输出样例1:
out
2 1 4 7 12
### 输入样例2:
in
20
X..................X
.X................X.
..X..............X..
...X............X...
....X..........X....
.....X........X.....
......X......X......
.......X....X.......
........X..X........
.........XX.........
### 输出样例2:
out
1 8 10
答案:若无答案欢迎评论