給出乙個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...