NC50618. 巧克力棒
描述
输入描述
输入数据共20行。第2i-1行一个正整数,表示第i轮巧克力棒的数目。第2i行个正整数,表示第i轮巧克力棒的长度。
输出描述
输出数据共10行。每行输出YES或NO,表示TBL是否会赢。如果胜则输出NO,否则输出YES。
示例1
输入:
3 11 10 15 5 13 6 7 15 3 2 15 12 3 9 7 4 2 15 12 4 15 12 11 15 3 2 14 15 3 3 16 6 4 1 4 10 3 5 8 7 7 5 12
输出:
YES NO YES YES YES NO YES YES YES NO
C++11(clang++ 3.9) 解法, 执行用时: 5ms, 内存消耗: 588K, 提交时间: 2020-06-02 20:35:41
#include<bits/stdc++.h> #define reg register int n,sg[16]; int dfs(int x=1,int S=0,int flag=0) { if(x>n) { return flag&&!S; } return dfs(x+1,S,flag)||dfs(x+1,S^sg[x],1); } int main() { for(reg int T=10;T;--T) { scanf("%d",&n); for(reg int i=1;i<=n;++i) scanf("%d",sg+i); printf(dfs()?"NO\n":"YES\n"); } return 0; }
Python3 解法, 执行用时: 80ms, 内存消耗: 7060K, 提交时间: 2021-12-15 16:56:10
def dfs(x, S, flag): global n global sg if(x>n): return flag and (not S) return dfs(x+1,S,flag) or dfs(x+1, S^sg[x],1) for _ in range(10): n = int(input()) sg = [0] + list(map(int, input().split())) if dfs(1, 0, 0): print("NO") else: print("YES")