Alpha-Beta 剪枝:
// mi=-inf mx=inf
int LH(int u, int mi=INT_MIN, int max=INT_MAX,int is_max=1) {//is_max代表的需要的是最大的,但是本回合對手選
if (!G[u].empty() return val[u];
if (is_max) { //自己挑大的
for (int v:G[u]) {
mi = max(mi, LH(v, mi, mx, is_max ^ 1));
if (mi >= mx) break; //如果選比之前的還大個,那對手肯定不讓進u這邊來
}
return mi;
} else { //對面挑小的
for (int v:G[u]) {
mx = min(mx, LH(v, mi, mx, is_max ^ 1));
if (mi >= mx) break; //如果選比之前的還小個,那我肯定也不要到u這邊來
}
return mx;
}
關於晚上的CF
- APM不夠快
- 程式碼細節容易錯
- 光想不敲、不會做的時候,要麼跟著榜單跳過、要麼就嘗試