我們把把乙個遊戲看成在二維平面上玩,一開始在(0
,0) (0,
0)
,從左邊刪x+
1 x+1
,從右邊刪y+
1 y+1
。 那麼假如左邊刪
x x
個,右邊刪
y' role="presentation" style="position: relative;">y
y個,那麼sg
(x,y
)=0 sg(
x,y)
=0
,我們稱之為終止態,那麼和終止態相鄰且不為終止態的點sg
=1s g=
1,稱其為邊界態。
不難發現對於乙個
x x
,終止態只有乙個,而且隨著
x' role="presentation" style="position: relative;">xx增大
y y
是單調不降的,大概就像乙個右上折線。
還有兩個小結論:
1. 假設(x
+1,y
+1)' role="presentation" style="position: relative;">(x+
1,y+
1)(x
+1,y
+1)必敗,那麼(x
,y) (x,
y)
必敗,這個顯然;
2. 假設(x
+1,y
+1),
(x+2
,y+2
) (x+
1,y+
1),(
x+2,
y+2)
都必勝,那麼(x
,y) (x,
y)
必勝。
考慮第二個結論的證明,其實這裡的(x
+2,y
+2) (x+
2,y+
2)
必勝是保證(x
,y+2
),(x
+1,y
+2),
(x+2
,y+1
),(x
+2,y
) (x,
y+2)
,(x+
1,y+
2),(
x+2,
y+1)
,(x+
2,y)
均不為終止態。 因為(
x+1,
y+1)
( x+
1,y+
1)
必勝則(x
+2,y
+1),
(x+1
,y+2
) (x+
2,y+
1),(
x+1,
y+2)
中有乙個必敗。假設是(x
+2,y
+1) (x+
2,y+
1)
必敗,那麼(x
+2,y
) (x+
2,y)
必勝,又因為(x
+1,y
+1) (x+
1,y+
1)
必勝,那麼(x
+1,y
) (x+
1,y)
必敗,那麼(x
,y) (x,
y)
就必勝了。另一種假設同理。
那麼考慮(0
,0),
(1,1
),..
.,(m
,m) (0,
0),(
1,1)
,...
,(m,
m)
這條對角線上((m
,m) (m,
m)
是終止態或者邊界態),那麼只有三種可能:
1. 全為必勝;
2. 全為必敗;
3. (m,
m)( m,
m)
為邊界態必勝,其餘必敗。
那我們只要預處理bi
b
i表示左端點為
i i
,最長的單調區間的右端點的位置(也就是終止態),ci
=max(b
i+1,
bi+1
)' role="presentation" style="position: relative;">ci=
max(bi
+1,b
i+1)
ci=max(b
i+1,
bi+1
)也就是邊界態。就不難二分出
m m
,假如(m
,m)' role="presentation" style="position: relative;">(m,
m)(m
,m)是終止態就是情況2,否則雙方要麼一直刪左邊,要麼一直刪右邊,只要再二分一下兩種情況走到邊界態的長度,然後判一下奇偶性(全奇必敗,有偶必勝)即可。
**:
#include
#include
#include
#include
#define n 1000010
using
namespace
std;
int n,m,ty,a[n],b[n],c[n];
int read()
int main()
for(int i=1;i<=n;i++)
c[i]=max(b[i+1],b[i]+1);
m=read();
while(m--)
if(c[l]>=r)
while(lint len=(l+r)>>1;
if(c[l+len]>=r-len) r=len;
else l=len+1;
}l+=l-1;r-=l-1;
l=0;r=r-l+1;
while(lint len=(l+r)>>1;
if(c[l+len]>=r) r=len;
else l=len+1;
}u=l;
l=0;r=r-l+1;
while(lint len=(l+r)>>1;
if(c[l]>=r-len) r=len;
else l=len+1;
}v=l;
if((u&1)&&(v&1)) puts("liulei");
else
puts("se");
}return
0;}
例題 油田(UVa 572)
輸入乙個m行n列的字元矩陣,統計字元 組成多少個八連塊。如果兩個字元 所在的格仔相鄰 橫豎或者對角線方向 就說他們屬於同乙個八連塊。sample input 1 1 3 5 sample output01 分析 dfs基礎題,典型題。用dfs找聯通塊 從每個 格仔出發,遞迴遍歷它周圍的 格仔。每次訪...
mysql中文亂碼解決 5 7 2
1 資料庫亂碼如下 初始安裝mysql後,character set server 值是latin1.導致存入資料庫的中文顯示?亂碼。解決方法就是修改my.ini檔案 如下 mysqld 下加以下配置 server type 3 mysqld the next three options are m...
5 7 2 動物世界 15分
1 實現mammal類的方法 2 由mammal類派生出dog類,在dog類中增加itscolor成員 color型別 3 dog類中增加以下方法 constructors dog dog int age dog int age,int weight dog int age,color color ...