先把棋盤黑白染色,那麼對於o,當且僅當它所處的格仔顏色和空格不一樣才會移動,x相似,那麼對於這些o/x,最多也就是被移動1次而已。同時每次空格每次移動所處顏色都是在改變
那麼就是二分圖博弈啊。而走一步相當於刪除乙個點,然後每次就讓被刪的那個點去找增廣路,找到了就必敗,反之必勝。
蛋蛋走完必勝,兔兔再走又是必勝就是下錯了
#include#include#include
#include
#include
#include
using
namespace
std;
const
int dx[4]=;
const
int dy[4]=;
struct
node
a[11000];int len,last[11000
];void ins(int x,int
y)int match[11000
];int ti,v[11000]; bool bo[11000
];bool findmuniu(int
x) }
}return
false;}
intn,m,prex,prey,nowx,nowy;
char ss[110][110]; int blen,b[11000],aslen,as[11000
];int point(int x,int y)
bool win(int x,int
y)int
main()
blen=0
;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if((i+j)%2==(prex+prey)%2&&ss[i][j]!='o'
)
}ti=0;memset(v,0,sizeof
(v));
memset(bo,
true,sizeof
(bo));
for(int i=1;i<=blen;i++)
int ak; aslen=0
; scanf("%d
",&ak);
for(int i=1;i<=ak;i++)
printf(
"%d\n
",aslen);
for(int i=1;i<=aslen;i++)
printf(
"%d\n
",as
[i]);
return0;
}
bzoj 2435 Noi2011 道路修建
description 在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端的國家個數之差的絕對值。例如,在下...
BZOJ2435 Noi2011 道路修建
給出n個點,n 1條邊,顯然是一棵樹,每條邊有權值,而建設每條邊的代價是這條邊的權值乘上這條邊左邊的點數減去右邊的點數的絕對值 求出總代價 很水我們預設點1為樹的根,dfs將每個點遍歷一遍,求出每個點的深度和子樹點數 然後遍歷一遍所有的邊,ans 邊權 abs n 深度更深的點的子樹點數 2 為什麼...
NOI2011道路修建(BZOJ2435)
傳送門 time limit 10 sec memory limit 128 mb 在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1條雙向道路。每條道路的修建都要付出一定的費用,這個費...