You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
3.2 KiB

2 years ago
HDU4315 Climbing the Hill
https://blog.csdn.net/weixin_43596048/article/details/102726258
[题目传送门](https://acm.hdu.edu.cn/showproblem.php?pid=4315)
### 一、题意
在山上有$n$个人,每个人编号是$1$~$n$,这些位置**只能同时被一个人占据**,但是山顶可以同时被多个人占据,距离山顶第$k$近的是$King$,现在$Alice$和$Bob$开始向上送人,条件是不能跨越前面最近的人,问在$Alice$先手,双方最优的条件下谁能把$King$送到山顶获胜。
<center><img src='http://acm.hdu.edu.cn/data/images/C399-1006-1.jpg'></center>
### 二、解析过程
尼姆博弈变形。
#### $n$为偶数时:问题简化一下,假设全都是黄球,谁把最后一个球移出谁就赢
$(a_1,a_2) (a_3,a_4) …… (a_{2i-1},a_{2i}) ……(a_{n-1},a_n)$其中第$i$个球与第 $i+1$个球是**相邻**的,$i$为奇数,谁面对这个状态谁就必输。
理由很简单:先手移动第$i$个球,后手移动第 $i+1$ 个球,使之仍然保持必赢状态。
<font color='red'><b>黄海理解:按上面的说法,两两一组,组内视为奇数层台阶,$i+1-i-1$,也就是空格个数视为石子个数,这里都是$0$;组与组之间视为偶数层台阶,偶数层台阶的石子个数没有意义。</b></font>
$$ \LARGE 组内 \Leftrightarrow 奇数阶 \\
组间 \Leftrightarrow 偶数阶$$
回到原问题**谁先移出红球谁就赢**:
* 假设红球是第一个球:$Alice$直接就赢了
* 假设红球不是第一个球:
很显然,如果红球在偶数位置后手必赢,如果在奇数$i$位置,则只需将第$i-1$个球移到第一个位置就$ok$了。
所以与红球位置无关。
至于产生这个状态$\large (a_1,a_2) (a_3,a_4) …… (a_{2i-1},a_{2i}) ……(a_{n-1},a_n)$,那么就是简单的$Nim$问题了
#### $n$ 为奇数时,这里再分成两种情况。
当k=2时把a1到最前边当成一个堆剩下两两之间成堆当k=2时把a1-1当成一个堆就是说第一个球移动到第一个位置(不是最前边),剩下的不变,。谁先面对这种状态就输了。
题意在山上有n个人每个人编号是1~n这些位置只能同时被一个人占据但是山顶可以同时被多个人占据距离山顶第k近的是King现在Alice和Bob开始向上送人条件是不能跨越前面最近的人问在Alice先手双方最优的条件下谁能把King送到山顶。
这题分两种情况:
1King在第一位的时候Alice获胜 因为Alice先手可直接将King送到山顶。
2King在第二位且人数n为奇数时从后往前两两配对那么第一个人最多只能停在a[1]上 因为如果第一个人爬到山顶那么king就可以直接上山顶了所以这题可以转化为 谁必须移动第一个人谁必败。
此时a[0] = 0; 例如 a[1] = 2, a[0]=0 ,a[1]只能移动到1的位置 所以这个堆是a[0]-1,而如果King不在第二位的话 那么a[1]就可以直接移动到山顶了 这个时候就比King在第二位时的情况多出一个 因此令a[0] = -1 因为--1) 等于 +1.
TODO
https://www.cnblogs.com/Ritchie/p/5624945.html
https://www.cnblogs.com/AWCXV/p/7626724.html