1451F Nullify The Matrix(博弈,異或)
Codeforces Round #685 (Div. 2)
F. Nullify The Matrix
題面:Nullify The Matrix
題意:一個 n ? m n * m n?m 的矩陣 m a t mat mat,元素均為非負數,其上 Ashish(先手) 與 Jeel 玩一個游戲,
每個人輪流操作的規則:
① 選擇起點 S ( r 1 , c 1 ) S(r1, c1) S(r1,c1),該點元素不能為 0 0 0,
② 選擇終點 T ( r 2 , c 2 ) T(r2, c2) T(r2,c2),滿足 r 2 ≥ r 1 , c 2 ≥ c 1 r2 \ge r1, c2 \ge c1 r2≥r1,c2≥c1,
③ S S S 點的值減少一個任意值 x ∈ [ 1 , m a t c 1 , r 1 ] x \in [1, mat_{c1, r1}] x∈[1,matc1,r1?],
④ S S S 到 T T T 的任意一條最短路,該路上的所有點(除了 S S S)賦予任意值,
無法操作者敗,給定初始局面,問勝者是誰,
范圍: 1 ≤ n , m ≤ 100 , 0 ≤ m a t i , j ≤ 1 0 6 1 \le n,m \le 100,~0 \le mat_{i,j} \le 10^6 1≤n,m≤100, 0≤mati,j?≤106,
分析:
通過分析可以發現起點是最重要的,如果非 0 0 0 點按照下圖的對角線分布的話,每次最多只能讓一個格子變成 0 0 0,本質上與 Nim 取石子是一致的,只有當 異或值不等于0 時,局面必勝,因為先手總是可以變換成 異或值等于0 的局面留給對面,而最終的敗態同樣為 異或值等于0,

因此通過按照對角線分割的方式我們可以將該游戲劃分成 r + c ? 1 r + c-1 r+c?1 個子游戲,但是本題中他們不是相互獨立的,

而題目提供的修改操作是在起點到終點的最短路上進行的,我們可以在路上進行任意賦值,意味著我們可以對其間的所有子游戲進行勝負態變換,以此來完成整體的勝負態變換,
因此操作允許我們將當前的局面 S S S:存在子游戲異或和非0 進行一次移動后變成局面 S ′ S' S′:所有子游戲異或和均為0,并且局面 S ′ S' S′ 進行一次移動必然會變換為局面 S S S,且最終敗態為 S ′ S' S′,因此根據起始局面是否為 S S S 即可判斷勝負態,
Code:
#include <bits/stdc++.h>
#define int long long
#define double long double
using namespace std;
inline int read()
{
int s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-')
w = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
s = s * 10 + ch - '0', ch = getchar();
return s * w;
}
const int MAXN = 100 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const double eps = 1e-9;
const double PI = acos(-1.0);
int n, m, k;
int arr[MAXN][MAXN];
int xorsum[MAXN * 2];
signed main()
{
int T = read();
while (T--)
{
memset(xorsum, 0, sizeof(xorsum));
n = read(), m = read();
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
arr[i][j] = read();
xorsum[i + j] ^= arr[i][j];
}
}
int ans = 0;
for (int i = 0; i < n + m; i++)
{
if (xorsum[i])
{
ans = 1;
break;
}
}
if (ans)
{
cout << "Ashish" << endl;
}
else
{
cout << "Jeel" << endl;
}
}
return 0;
}
【END】感謝觀看
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/226956.html
標籤:其他
上一篇:問題 A: 阿Q的記憶
