2 条题解

  • 0
    @ 2024-8-18 12:08:16

    验题人做法

    AA 先删,必胜条件就是第一次删除自己左右端点处不等于 BB 的左右端点处的值。

    BB 左右两边的值都和 AA 左右两边的一样,AA 就只能退一步,看倒数第二的和正数第二的能和 BB 一样不,假如都一样的,以此类推。

    最后 AA 没有找到不一样的删,那么 BB 就赢了。

    通俗的意思就是,如果一个数组和另一个数组相等或者反转后和另一个数组相等,那么 AA 就输了。反之则必胜。

    #include <bits/stdc++.h>
    
    using u32 = unsigned;
    using i64 = long long;
    using u64 = unsigned long long;
    using i128 = __int128;
    
    int main() {
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(nullptr);
    
    	int n;
    	std::cin >> n;
    	std::vector<int> a(n), b(n), c(n);
    
    	for (int i = 0; i < n; i++) {
    		std::cin >> a[i];
    	}
    	for (int i = 0; i < n; i++) {
    		std::cin >> b[i];
    	}
    	c = b;
    
    	reverse(b.begin(), b.end());
    
    	if (a == b || a == c) {
    		std::cout << "1\n";
    	} else {
    		std::cout << "0\n";
    	}
    
    
    	return 0;
    }
    

    信息

    ID
    56
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    40
    已通过
    11
    上传者