当前位置:
首页 >
JZOJ__Day 1:【NOIP普及模拟】JABUKE
发布时间:2025/3/15
34
豆豆
生活随笔
收集整理的这篇文章主要介绍了
JZOJ__Day 1:【NOIP普及模拟】JABUKE
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题目描述
Mirko 最近发现了一个古老的游戏。这个游戏的屏幕有N列。在屏幕的底部,有个占M(M<N)列的船。在玩这个游戏的
过程中,我们可以左右移动这条船,但是这条船必须时刻完整的在屏幕里面。这条船开始的时候是在最左边的。有一些苹果从
这个屏幕的顶部掉下来,每个苹果会从屏幕N列中的某一列的顶部掉下来,垂直下落直到到达屏幕的底部。当前一个苹果掉落在
底部以后,后一个苹果开始下落。一个苹果被船接到是这么定义的:这条船占有这个苹果掉下来的那一列。我们的目标是接到所
有的苹果,在这种情况下,我们要求在所有苹果的掉落过程中,尽量减少船的移动总距离。
输入
第一行包括两个整数N和M(1<=M<N<=10),第二行输入一个整数J,表示苹果的总个数,接下来的J行,每行一个整数,表示相应的苹果掉落在第几列。
输出
输出只有一个整数,代表在所有苹果下落的过程中,我们需要最少的移动船的总距离。
样例输入
5 1 3 1 5 3样例输出
6数据范围限制
提示
输入:
5 2
3
1
5
3
输出:
4
分析
三种情况:
第一种:船能接住苹果,不用移动。
第二种:苹果在船的左边,只需把船最左边的坐标变成苹果落下来的那一列,再把船最右边的坐标处理一下。
第三种:苹果在船的右边,只需把船最右边的坐标变成苹果落下来的那一列,再把船最左边的坐标处理一下。
程序:
var n,m,j,w,a,b,i,tj:longint; beginreadln(n,m);readln(j);a:=1;b:=m;tj:=0;for i:=1 to j dobeginreadln(w);if w<a thenbegintj:=tj+(a-w);b:=b-(a-w);a:=w;end elseif w>b thenbegintj:=tj+(w-b);a:=a+(w-b);b:=w;end;end;write(tj); end.
转载于:https://www.cnblogs.com/YYC-0304/p/9500097.html
总结
以上是生活随笔为你收集整理的JZOJ__Day 1:【NOIP普及模拟】JABUKE的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: JZOJ__Day 2:【普及模拟】串
- 下一篇: JZOJ__Day 1【NOIP普及模拟