2025 nowcoder round5
2025 牛客多校 round5 补题
随机补题(
C - Array Deletion Game
\(n\) 个数,先后手轮流选,每次删除首位或者末尾的数,删除后剩余数的和小于等于 \(s\) 则输,询问多个 \(s\) ,对每个 \(s\) 求先手的胜负态。
定义区间合法为区间和大于 \(s\) 。
若 \([l,r]\) 为必败,则有 \([l,r+1],[l-1,r]\) 为必胜,\([l-1,r+1]\) 为必败;同理若 \([l,r]\) 为必胜,则其一定可以转移到一个必败态,从这个必败态出发能推出 \([l-1,r+1]\) 为必胜。
因此所有合法(即区间和大于 \(s\))的状态下,\(l+r\) 相同的状态胜负相同。
那么求 \([1,n]\) 的胜负态,可以先转移到求 \([1+d,n-d]\) 的胜负态,此时 \([1+d,n-d]\) 合法,且 \([1+d+1,n-d-1]\) 非法。
画出博弈图,一个非法状态的所有子状态都是非法状态,这里可以认为非法状态是必胜态,因为其一定由对方从一个状态转移过来,对方输。
那么 \([1+d,n-d]\) 的剩余转移只可能是两条侧链,此时只需要判断出走某一条侧链走多少次会碰到非法态(玩家不会主动到非法态,这样就输了),两条侧链有一条先手赢那先手就能赢。
以上找 \(d\) ,判侧链的部分都可以二分,复杂度 \(O(Q\log n)\) 。

上图是 \([l+d,r-d]\) 的博弈图,红色区域都是非法区域,判断侧链即可。

浙公网安备 33010602011771号