NOI2011 兔兔與蛋蛋遊戲

2022-05-06 23:24:07 字數 2119 閱讀 9560

傳送門

直接博弈論dfs可以得到75分(然鵝我博弈論學的很pie)

#include#define ll long long

#define inf 10000

using

namespace

std;

intread()

while(s>='

0'&&s<='9')

return x*f;

} char s[45

];int lr=,ud=,ans[1003],tu[43][43],sg[43

];int x,y,tot=0

,n,m;

int dfs(int x,int y,int

op)//

往下遞迴得到每乙個局面,判斷其為必勝還是必敗

swap(tu[xx][yy],tu[x][y]);

}return0;

}int

main()

}int op=read();

for(int i=1;i<=op;++i)

printf(

"%d\n

",tot);

for(int i=1;i<=tot;++i)

printf(

"%d\n

",ans[i]);

} /*

*/

75分然後正解是二分圖。。。哇這誰想得到是二分圖

讓我們認真分析一下:

每一次順序移動白格黑格,當最後無法移動停止,且每乙個格仔只會走過一次(感**知)相當於是黑白交替格仔染色—>想到二分圖。

與其說是每次交換空格和其他黑白格,不如說是空格在黑白格上走。(第一步在空格本身上)

我們可以把第一步認為是黑格,然後交替走黑白格,如果最後走到黑格,說明兔兔輸了(兔兔移動白格)。

然後二分圖匹配保證了最後走到的一定是白格,因為從黑格出發(要求每一條路都是奇數步)

走格仔相當於是在增廣路上走,如果當前x,y一定在最大匹配上(在增廣路上而且沒有其他的增廣路可以替代它了),說明現在是必勝態。

然後對於每一步進行判斷,如果兔兔和蛋蛋的第i步都是必勝態,說明兔兔在走第i步之前是必勝態,走了第i步後蛋蛋就是必勝態了。

滿足題目要求,累計答案。

#include#define n 43

#define ll long long

#define inf 10000

using

namespace

std;

intread()

while(s>='

0'&&s<='9')

return x*f;

} struct

edgew[n*n*4

];char

s[n];

int lr=,ud=,ans[1003],tu[n][n],head[n*n],ord[n][n],vis[n*n],match[n*n],ban[n*n],win[1003

];int x,y,tot=0,n,m,ndnum=0,res=0,timer=0

;void add(int a,int

b)void jian_tu()//

建二分圖

}}int dfs(int

x) }

return0;

}int

main()

}jian_tu();

for(int i=1;i<=n;++i)

for(int j=1;j<=m;++j)

if(tu[i][j])timer++,dfs(ord[i][j]);

int op=read();

for(int i=1;i<=op*2;++i)

x=read();y=read();

}for(int i=1;i<=op;++i)

if(win[2*i-1]&&win[2*i])ans[++res]=i;

printf(

"%d\n

",res);

for(int i=1;i<=res;++i)

printf(

"%d\n

",ans[i]);

}

二分圖ac

Noi2011 兔兔與蛋蛋

題目 題解容易想到空格移動的路徑是不會自交的。因為空格移動的路徑是黑白棋相間的 所以對棋盤進行黑白染色,建立二分圖 如果黑白兩格上的棋子不一樣則可以連邊 如果乙個人 a 將空格移入了乙個在最大匹配內的點,那麼它的對手 b 就可以沿著匹配邊前進 否則就相當於找到了一條新的匹配邊 而a只能沿著非匹配邊前...

NOI2011 洛谷 兔兔與蛋蛋遊戲

初見安 這裡是傳送門 洛谷p1971 noi2011 兔兔與蛋蛋遊戲 這種題啊 就只能多悟,才能看到了就知道怎麼做 bushi。看題目的操作 每次交替移動黑白棋子。然後就可以想到二分圖了 什麼鬼。空白格仔從初始到終點走的路徑上的格仔都是與之交換過的,並且黑白相間,該路徑與以前走過的路徑不可能有交點。...

NOI 兔兔與蛋蛋的遊戲

二維的乙個最大匹配 program game type rec record x,y longint end const numm rec x 0 y 0 dx array 1.4 of integer 0,1,0,1 dy array 1.4 of integer 1,0,1,0 var link...