SRM 384

暴力SG值

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

class ChessTraining {
public:
	string game(vector<int> , vector<int> );
};
int a[105][105];
int b[10005];
int bc;
string ChessTraining::game(vector<int> x, vector<int> y) {
	int i, j, k;
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	bc = 1;
	for (i = 0; i < 105; ++i) {
		for (j = 0; j < 105; ++j) {
			if (i == j)
				continue;
			if (i == 0 || j == 0)
				continue;
			for (k = 1; k <= i || k <= j; ++k) {
				if (k < i && i - k != j)
					b[a[i - k][j]] = bc;
				if (k < j && j - k != i)
					b[a[i][j - k]] = bc;
				if (k < i && k < j)
					b[a[i - k][j - k]] = bc;
			}
			for (k = 0;; k++)
				if (b[k] != bc)
					break;
			a[i][j] = k;
			bc++;
		}
	}
	int ans = 0;
	for (i = 0; i < x.size(); ++i) {
		if (x[i] == 0 || y[i] == 0 || x[i] == y[i])
			return "Alice will win";
		ans ^= a[x[i]][y[i]];
	}
	if (ans)
		return "Alice will win";
	else
		return "Bob will win";
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章