第二个点错了
查看原帖
第二个点错了
1165435
Bskyi楼主2024/8/2 21:13
#include<bits/stdc++.h>
using namespace std;
long long a[200005]={0};
long long b[200005]={0};
int main(){
	int t;
	cin >> t;
	while(t--){
		int n;
		cin >> n;
		for(int i=1;i<=n;i++){
			cin >> a[i];
		}
		for(int i=1;i<=n;i++){
			cin >> b[i];
		}
		long long ans1=0x3f3f3f3f,ans2=0x3f3f3f3f,ans3=0x3f3f3f3f,ans4=0x3f3f3f3f;
		for(int i=2;i<=n-1;i++){
			ans1=min(ans1,abs(a[1]-b[i]));
			ans2=min(ans2,abs(a[n]-b[i]));
			ans3=min(ans3,abs(b[1]-a[i]));
			ans4=min(ans4,abs(b[n]-a[i]));
		}
		long long ans=ans1+ans2+ans3+ans4;
		ans=min(ans,abs(a[1]-b[1])+ans2+ans4);
		ans=min(ans,abs(a[1]-b[n])+ans3+ans2);
		ans=min(ans,abs(a[n]-b[1])+ans1+ans4);
		ans=min(ans,abs(a[n]-b[n])+ans1+ans3);
		ans=min(ans,abs(a[n]-b[n])+abs(a[1]-b[1]));
		ans=min(ans,abs(a[n]-b[1])+abs(a[1]-b[n]));
		cout << ans << endl;
	} 
	return 0;
}

求助,第二个没过,为什么循环要从1~n而不是2~n-1

2024/8/2 21:13
加载中...