思路:分情况讨论,只用考虑相邻障碍物的位置关系就行了,不相邻的就算移动也没影响。
① 一开始就是有通路的,即相邻的两个障碍物的距离>1,那么不需要进行任何移动就可以到达目的点。花费为0元。
② 一开始没有通路,所有的障碍物都在一列。这个他可以先向右移动,接下来有两种选择,向上移或者继续向右移(因为可以发现n>=2,水平方向图的大小是0~1e6+1所以在水平方向最少是可以左移或者右移两格的,所以不用考虑水平方向越界的问题),所以花费最小值为min(u+v,v+v);
③ 如果没有通路,而且障碍物都在一列,这说明是斜着摆放的,所以花费最小值为min(u,v);
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-->0) {
String str = t==0?"":"\n";
long n = sc.nextLong();
long u = sc.nextLong();
long v = sc.nextLong();
long arr[] = new long[(int)n];
for(int i=0;i<n;i++) {
arr[i] = sc.nextLong();
}
long min = Long.MAX_VALUE;
for(int i=0;i<n-1;i++) {
if(Math.abs(arr[i]-arr[i+1])>1) {
min = 0;
}else if(arr[i]==arr[i+1]){
min = Math.min(min,Math.min(u+v,2*v));
}else {
min = Math.min(min,Math.min(u,v));
}
}
System.out.print(min+str);
}
}
}