求助!(悬一关)
查看原帖
求助!(悬一关)
1062652
30CSKKKK楼主2023/10/7 12:50
#include <bits/stdc++.h>
using namespace std;

const int N = 2e3 + 10;
int b[N], t[N];
int T, n;

int main() {

    cin >> T;
    while(T--) {
        cin >> n;
        for(int i = 1; i <= n; i++) cin >> t[i];
        for(int i = 1; i <= n; i++) cin >> b[i];
        bool ok;
        while(true) {
            bool flag = true;
            for(int i = 1; i <= n; i++)
                if(b[i] != 0) {
                    flag = false;
                    break;
                }
            if(flag) {
                ok = true;
                break;
            }
            flag = true;
            for(int i = 1, j = n; i <= j; i++, j--)
                if(b[i] != b[j]) {
                    flag = false;
                    break;
                }
            if(flag) {
                for(int i = 1, j = n; i <= j; i++, j--) t[i] = t[j] = t[i] + t[j];
                ok = true;
                int x = b[1] / t[1];
                for(int i = 1; i <= n; i++)
                    if(b[i] % t[i]) {
                        ok = false;
                        break;
                    }
                if(!ok) break;
                for(int i = 1; i <= n; i++)
                    if(b[i] / t[i] != x) {
                        ok = false;
                        break;
                    }
                break;
            }
            flag = 1;
            for(int i = 1; i <= n; i++)
                if(b[i] < t[i]) {
                    flag = false;
                    break;
                }
            if(!flag) {
                ok = false;
                break;
            }
            for(int i = 1; i <= n; i++)
                b[i] -= t[i];
        }
        puts(ok ? "Yes" : "No");
    }

    return 0;
}
2023/10/7 12:50
加载中...