2020-2021 Summer Petrozavodsk Camp, Day 6: Korean Contest
单刷的第一场,过了3题(DEG)就挂机了。
开场先读了个K题,一开始想假了以为是个签到(数学题签到?)直接拿了个板子敲高斯消元,敲着敲着发现不对劲,后面看到有人过G了就去看了下G。
G题说的是,(N)块木板,每块长度是(a_i),每块木板最下/最上有个黑棋/白棋,每轮每个人只能移动一个木板上的一个棋子,移动任意步数,不能跨越对方棋子,不能操作者输,读完题想了想是个很裸的Nim,直接写了(不过写挂一个地方吃了一发罚时)。
接着是E题,给一个(n imes m)的棋盘,和一个整数(k),两个人轮流在棋盘上放置observer,某个人操作完之后存在一个observer,使得所有(k imes k)的矩形都包含这个observer的时候游戏结束,或者没有人能操作的时候游戏结束,最后一个操作的人获胜。稍微想一下会发现,如果(nleq 2k-1,mleq 2k-1)的话,先手直接能一步结束游戏,否则不管是谁都不能直接获胜,只能拖到最后一步,这时候就看(nm)的奇偶性…
之后才是D题,D又是一个Game…(这场好多Game),一开始有一个数组(A[1,dots,n]),Y和P玩游戏(T)轮游戏,第(i)轮,Y和P先后在([L_i,R_i])内选择两个数(a,b),这轮游戏的分数=([a,b])内单调不减的子区间个数(如果(a>b)就变成([b,a])),Y想让分数尽量小,P想让分数尽量大,问每轮游戏最后的分数。
可以发现对于一个固定的(l),(f[l,r])表示([l,r])内单调不减的子区间个数,([l,r])是随(r)递增的,而(f[l,r])是可以快速求解的,再去考虑两个人怎么决策,对于第一个人选的(a),单调性告诉我们,第二个人要么选(l)要么选(r),问题变成要怎么选(a)使得(max(f[l,a],f[a,r]))最小,这就是一个下凹的单峰函数啦…于是可以(O(n+Tlog n))地三分。
(有小伙伴问怎么算(f[l,r]),其实就是把若干个单调不减的子区间先划分成一个个块,预处理一下每个位置属于哪个块,以及每个块的信息、前(i)个块的答案,然后就可以(O(1))查询了)
接着继续去看K题,仔细想了想YY了一个做法,感觉需要多项式的一些操作…不会写,算了算了。
接着一个比较可做的应该是A和F题,F听说是一个需要凸优化的dp,但是不会,A听说有个分形结构。