AGC048

https://atcoder.jp/contests/agc048

D - Pocky Game

先找结论:

  • 每个人的最优决策一定是“只拿一个”或者“全部拿完”。因为“拿多于一个但不拿完”之后下一步的决策集合是“只拿一个”的子集
  • 若当前局面 First 必胜,那么给最左边加一个石子仍然 First 必胜
  • 最左边石子足够多时 First 必胜
  • 根据上两条,\(\exists x\) 使得当且仅当最左边石子数 \(\ge x\) 时 First 必胜

然后就可以 DP 了。设 \(f[l,r]\) 表示当前轮到 First,剩下区间 \([l,r]\) 中的石子,当且仅当 \(a_{l}\ge f[l,r]\) 是 First 必胜,类似地可以设出 \(g\)

考虑转移(以 \(f\) 为例):若 \(a_{r}<f[l+1,r]\),那么 First 拿完 \(a_l\) 获胜;否则只拿一个,若 \(a_{l}-1<g[l,r-1]\) 那么 Second 拿完 \(a_r\) 获胜;否则只拿一个 \(\cdots\)
谁获胜取决于 \(a_{l}-f[l,r-1]\)\(a_{r}-g[l+1,r]\) 的大小,可以得到 \(f[l,r]=a_{r}-g[l+1,r]+f[l,r-1]+1\)

posted @ 2022-06-30 16:59  401rk8  阅读(42)  评论(0编辑  收藏  举报