這是一篇沒有看完的部落格
「 im
part
ialc
ombi
nato
rial
game
s」(以
下簡稱i
cg)。
「impartial combinatorial games」(以下簡稱icg)。
「impar
tial
comb
inat
oria
lgam
es」(
以下簡稱
icg)
。滿足以下條件的遊戲是icg
icgic
g:1、有兩名選手;
2、兩名選手交替對遊戲進行移動(mov
emove
move
),每次一步,選手可以在(一般而言)有限的合法移動集合中任選一種進行移動;
3、對於遊戲的任何一種可能的局面,合法的移動集合只取決於這個局面本身,不取決於輪到哪名選手操作、以前的任何操作、骰子的點數或者其它什麼因素; 4、如果輪到某名選手移動,且這個局面的合法的移動集合為空(也就是說此時無法進行移動),則這名選手負。
根據這個定義,很多日常的遊戲並非icg
icgic
g。例如象棋就不滿足條件3,因為紅方只能移動紅子,黑方只能移動黑子,合法的移動集合取決於輪到哪名選手操作。
定 義p
−pos
itio
n和n−
posi
tion
定義p-position和n-position
定義p−po
siti
on和n
−pos
itio
n:其中p
pp代表pre
viou
sprevious
previo
us,n
nn代表nex
tnext
next
,直觀的說,上一次mov
emove
move
的人有必勝策略的局面是p−p
osit
io
np-position
p−posi
tion
,也就是「後手可保證必勝」或者「先手必敗」,現在輪到mov
emove
move
的人有必勝策略的局面是n−p
osit
io
nn-position
n−posi
tion
,也就是「先手可保證必勝」。
更嚴謹的定義是:
1.無法進行任何移動的局面(也就是ter
mina
lpos
itio
nterminal position
termin
alpo
siti
on)是p −p
osit
io
np-position
p−posi
tion
;2.可以移動到p−p
osit
io
np-position
p−posi
tion
的局面是n−p
osit
io
nn-position
n−posi
tion
;3.所有移動都導致n−p
osit
io
nn-position
n−posi
tion
的局面是p−p
osit
io
np-position
p−posi
tion
。法一:sg打表找規律
#include
using namespace std;
const
int n=
1e6+10;
///打表
///f:可以取走的石子個數
///sg:0~n的sg函式值
///hash:mex{}
int f[n]
,sg[n]
,hash[n]
;void
getsg
(int n,
int m)
中未出現的最小的非負整數}}
}///如果有多堆,則
/// num=sg[n1]^sg[n2]^sg[n3]^....^sg[nx];
/// if(num==0) 則先手必敗
intmain()
getsg
(n,m)
;for
(int i=
0;i<=n;
++i)
printf
("%d %d\n"
,i,sg[i]);
}
法二:dfs
dfsdf
s版打表
#include
using namespace std;
const
int n=
1e6+10;
///dfs
///注意 s陣列要按從小到大排序 sg函式要初始化為-1 對於每個集合只需初始化1遍
///n是集合s的大小 s[i]是定義的特殊取法規則的陣列
int s[
110]
,sg[
10010
],n;
intsg_dfs
(int x)
}int e;
for(i=0;
;i++)if
(!vis[i]
)return sg[x]
=e;}
///如果有多堆,則
/// num=sg[n1]^sg[n2]^sg[n3]^....^sg[nx];
/// if(num==0) 則先手必敗
intmain()
sg_dfs
(m);
for(
int i=
0;i<=m;
++i)
printf
("%d %d\n"
,i,sg[i]);
}
kmp
演算法
:kmp演算法:
kmp演算法:
kmp演算法模板
暑假集訓(8 5)
學習內容 並查集 樹狀陣列 多校 今日完成題數 不包含多校 4 多校補題情況 之前定的每支隊伍標準 今日看書情況 12頁 今日做題總結 acwing241 acwing240 permutation 2 acwing 239 總結 每個題都應該用自己手動模擬,不斷的推,就算只是推樣例,在這個過程中,...
暑假集訓 8 5總結
學習內容 白書 cf 今日完成題數 不包含多校 4 多校補題情況 無多校 今日看書情況 15頁 學習演算法的總結 lucky string 微軟校招 codeforces round 577 div.2 c.maximum median codeforces round 577 div.2 b.ze...
暑假集訓日記Day xx
6.23 今天算是第一天吧 畢竟昨天被迫做了半天苦力 充實而豐滿的一天 上午做題 下午講題 晚上改錯 考試是原題和我會做有什麼關係嗎 早起跑操還闊以 比之前距離短就很快樂 然後練了會兒 就去吃早飯了 我好像飯量小了!晚上發現然並卵 上午就是考試唄 考試有啥好說的 考試沒啥好說的 那我在幹嘛呢 你在懷...