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)\)

img

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

posted @ 2025-08-24 15:41  蒻蒻虫  阅读(16)  评论(0)    收藏  举报