LUOGU P7625 ABUKE

时间:2021-07-14
本文章向大家介绍LUOGU P7625 ABUKE,主要包括LUOGU P7625 ABUKE使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

P7625 ABUKE

题目分析

船有长度,所以船的坐标可以用 $l$ 和 $r$ 来表示。

如果苹果在 $a$ 这个坐标就有三种情况:

  • 苹果在船的左边 $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 见祖宗 

需要注意的是两种情况更新步骤相同但更新次序不同。

原文地址:https://www.cnblogs.com/tec-/p/15012751.html