AcWing 893. collection -Nim game

// only take certain number of stones 
#include <CString> 
#include <the iostream> 
#include <algorithm> 
#include <unordered_set>
 the using  namespace STD;
 const  int N = 110 , M = 10010 ;
 int n-, m ;
 int S [N], F [M];
 int SG ( int X) {
     IF - (F [X] =! . 1 ) return F [X]; 
    unordered_set < int > S;
     for ( int I = 0 ; I <m; i ++ ) {
        int sum = s[i];
        if (x >= sum) S.insert(sg(x - sum));
    }
    for (int i = 0; ; i ++ )
        if (!S.count(i))
            return f[x] = i;
}
int main() {
    cin >> m;
    for (int i = 0; i < m; i ++ ) cin >> s[i];
    cin >> n;
    memset(f, -1, sizeof f);
    int res = 0;
    for (int i = 0; i < n; i ++ ) {
        int x;
        cin >> x;
        res ^= sg(x);
    }
    if (res) puts("Yes");
    else puts("No");
    return 0;
}

 

 

Guess you like

Origin www.cnblogs.com/QingyuYYYYY/p/11918945.html
Recommended