55pts求调
查看原帖
55pts求调
385049
111abcd楼主2023/10/6 21:11
#include <cstdio>
using namespace std;

const int N = 2e3 + 5;
int t, n;
int a[N], b[N];

bool check(int x[]) {
	for (int i = 1; i <= n; i++) {
		if (x[i] != x[n-i+1]) return false;
	}
	return true;
}

int main() {
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
		for (int i = 1; i <= n; i++) scanf("%d", &b[i]);
		bool flag = true;
		while (true) {
			if (check(b)) break;
			for (int i = 1; i <= n; i++) {
				b[i] -= a[i];
				if (b[i] < a[i]) {
					flag = false;
					break;	
				} 
			}
			if (!flag) break;
		}
		if (flag) {
			if (!check(a)) {
				for (int i = 1; i <= (n + 1) / 2; i++) {
					a[i] += a[n-i+1];
					a[n-i+1] = a[i];
				}
			}
			for (int i = 2; i <= n; i++) {
				if ((b[i] * a[i-1]) != (b[i-1] * a[i])) {
					flag = false;
					break;
				}
			}
			if (b[1] / a[1] * a[1] != b[1]) flag = false;
		}
		if (flag) puts("Yes");
		else puts("No");
	}
	return 0;
}
2023/10/6 21:11
加载中...