ZJOI2009 染色遊戲

2021-08-26 20:21:18 字數 900 閱讀 9001

給出乙個m*n的矩形,每個格仔內有一枚硬幣,正面朝上或反面朝上,每次可以選擇乙個連通塊,要求這個連通塊中的所有硬幣都在某個反面朝上的左上方,並將這個連通塊中的所有硬幣翻面,雙方輪流行動,問:先手有無必勝策略。

整個圖的sg函式值為每個反面朝上的硬幣的sg函式值(也就是只有這個硬幣反面朝上的局面的sg函式值)的異或和,因此我們可以先算出每個硬幣反面朝上的sg函式值;

對於乙個必勝的局面,它的sg函式值為不屬於所有它能轉移到的狀態的sg函式值構成的集合的最小正整數。

然後找規律,發現sg函式值是這樣的:

然後發現一行一列為這個數的橫縱座標和-1的lowbit

對於其他i行j列的數為2^(i+j-2)。

然後將每個反面朝上的硬幣的sg函式值異或起來,判斷是否為0即可。

#include

#include

#include

#define n 110

using

namespace

std;

int t,m,n,mm[n][n],cnt,num[n<<1];

char str[n];

inline

int ct(int u)

inline

int lb(int u)

inline

void get(int u,int v)

num[u+v-2]^=1;

}int main()}}

for(i=0;i<=m+n;i++) if(num[i]) break;

puts(i>m+n?"=_=":"-_-");}}

bzoj1434 ZJOI2009 染色遊戲

一共n m 個硬幣,擺成n m 的長方形。dongdong 和xixi 玩乙個遊戲,每次可以選擇乙個連通塊,並把其中的硬幣全部翻轉,但是需要滿足存在乙個 硬幣屬於這個連通塊並且所有其他硬幣都在它的左上方 可以正左方也可以正 上方 並且這個硬幣是從反面向上翻成正面向上。dongdong 和xixi 輪...

ZJOI2009 假期的宿舍

題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複...

ZJOI2009 假期的宿舍

這道題分析下就會發現是乙個二分圖匹配。將在校 包括來校訪友 和床單構成圖,判斷最大匹配數是否為總在校人數即可。這裡用的是 km 演算法。1 include 2 3using namespace std 45 define re register 6 define rep i,a,b for re i...