[ZOJ3316]Game】的更多相关文章

[ZOJ3316]Game(带花树) 题面 Vjudge 翻译: 给定棋盘上\(n\)个旗子 一开始先手可以随便拿, 然后每次都不能取离上次的曼哈顿距离超过\(L\)的旗子 谁不能动谁输. 问后手能否赢? 题解 假的博弈论 对于所有曼哈顿距离小于等于\(L\)的点连边 检查是否存在完美匹配 如果存在完美匹配,每次先手选择一个点,后手只需要选择对应的点即可. 否则一定存在一个无法匹配的点,与它曼哈顿距离小于等于\(L\)的个数一定是偶数个(如果是奇数个就会与它匹配) 那么这个联通块的大小是奇数个,…
题面 vjudge Sol 有一个棋盘,棋盘上有一些棋子,两个人轮流拿棋,第一个人可以随意拿,以后每一个人拿走的棋子与上一个人拿走的棋子的曼哈顿距离不得超过L,无法拿棋的人输,问后手能否胜利 首先距离小于等于\(L\)的连双向边 肯定是在每个连通块玩,并且这些连通块每个都有完美匹配后手才能赢 所以跑一般图最大匹配就好了 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) me…
题意:有一个棋盘,棋盘上有一些棋子,两个人轮流拿棋,第一个人可以随意拿,以后每一个人拿走的棋子与上一个人拿走的棋子的曼哈顿距离不得超过$L$,无法拿棋的人输,问后手能否胜利 把棋子看做点,如果两个棋子的距离$\leq L$就连一条边,显然一局游戏只能在一个连通块里玩 如果某一个连通块只有一个点,那么先手拿走它,后手就输了 如果一个连通块有很多个点,做一次匹配,如果有完美匹配,那么后手胜利,否则先手胜利 为什么? 假设$A$先手,$B$后手,如果没有完美匹配,那么$A$可以选择一个非匹配点开始游戏…