zoukankan      html  css  js  c++  java
  • [hdu1848] Fibonacci again and again

    题目链接

    sg函数

    sg函数入门题

    sg函数定义, 设sg(x)为状态x的sg函数, sg(x)>0则代表x这个状态是必赢点, 若sg(x)=0则代表x这个状态是必败点

    sg函数性质, sg(x)=mex{sg(y)} y为x可达的状态点

    观察定义就可以知道, 一个点为必胜点当且仅当这个点存在一个可达的状态点都是必败点, 一个点为必败点, 当且仅当所有可达点都是必胜点

    根据这个定义可以知道, 为什么sg(x)=0就是必败点(因为所有可达点都是必胜点), 为什么sg(x)>0代表x这个状态是必胜点, 因为可达点的集合中有至少一个必败点

     sg定理

    更深入的, 有个sg定理, 他能解决组合游戏的并(比如nim游戏)

    其表示为, 总状态的sg函数为各个互相独立的子状态的sg函数的异或和

    举个例子, 取石子游戏, 一共有n堆石子, 这n堆石子是互相独立的, 那么全部石子的sg函数就是$sg(x_1) \ xor \ sg(x_2)\  ...\  xor \ sg(x_n)$

    因为在这一题中, sg(x)=x, 所以最终nim游戏的结论就是$x_1\  xor\  x_2\  xor ...xor \ x_n$

    本题题解

    对于这道题, 对于一堆石子的$sg(x) = mex{sg(x-f[i])| f[i]\leq x}$

    所以对于三堆石子, 只需要把状态异或起来就可以了, 而sg函数可以记忆化搜索求

    还是比较好写的

    学习链接

      博弈论进阶之SG函数 - 自为风月马前卒 - 博客园 (cnblogs.com)

      老刘の组合博弈课件

  • 相关阅读:
    commando VM安装
    Pocscan搭建详解
    Windows-RW-LinuxFS
    Festival
    ffmpeg-metadata
    FFmpeg-Screen-Recording
    ffmpeg-map
    ffmpeg-utils
    Linux-Fcitx5
    ffmpeg-volumedetect
  • 原文地址:https://www.cnblogs.com/gllonkxc/p/15627110.html
Copyright © 2011-2022 走看看