P7625 ABUKE
题目分析
船有长度,所以船的坐标可以用
如果苹果在
- 苹果在船的左边
a<l<r 移动步数=l-a ; - 苹果在船的右边
l<r<a 移动步数=a-r ; - 苹果在船上
\,\,\,\,\,\,\,\,\,l\leq a\leq r 移动步数不会改变。
所以代码也就好写了。
代码
#include<bits/stdc++.h>
using namespace std;
long long read(){
long long x;
scanf("%lld",&x);
return x;
}
signed main() {
long long n=read(),m=read(),j=read(),ans = 0,l = 1,r=m;
for(long long i = 1; i <= j; i++) {
long long a=read();
if(a<l) { //苹果在船左边
ans+=l-a; //加上步数
l=a; //更新左边
r=l+(m-1); //更新右边
}
else if(a>r) { //苹果在船右边
ans+=a-r; //加上步数
r=a; //更新右边
l=r-(m-1); //更新左边
}
// else{ //为了好看 (逃)
// ans=ans;
// r=r;
// l=l;
// }
}
printf("%lld\n",ans);
}
//十年OJ一场空,不开Long Long 见祖宗
需要注意的是两种情况更新步骤相同但更新次序不同。