这周我一直在学习算法,因为有人考核顺便复习了一点go的基础,总体来说这周的效率非常的低,不仅是受早读的影响,在平常学习的时间也感觉了动力不足,这周锻炼的次数也不如上周,感觉是个划水周。
首先,这周我刚开始学习博弈论,首先博弈论的三大要素为
1.由两名玩家交替行动;
2.在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;
3.不能行动的玩家判负;
像这种算法题一般都会问你某某游戏最终稿结果是先手必败还是先手必胜,看似没有很复杂,但是一般解法都是唯一的,如果你想不到这种解法,那就gg,因为博弈论的逻辑一般很复杂,难想,但是代码实现起来较为容易。就像最简单的就是nim游戏了,如果你没有接触过这种解法,你根本想不到通过判断所有数的异或和是否为0来看是否为必败态。
一般博弈论的问题都是留给你一个局面,且你的局面不是一个必败态,然后经过操作后使得局面成为一个必败态在交给对手,因为很简单的一个逻辑,一个必败态经过操作后一定不是必败态,如果是那么前者就不是必败态了,一直到游戏结束。
这两天复习了树状数组和线段树,都在用c++写。