[比赛记录]2020-2021 Summer Petrozavodsk Camp, Day 6: Korean Contest

2020-2021 Summer Petrozavodsk Camp, Day 6: Korean Contest

单刷的第一场,过了3题(DEG)就挂机了。

开场先读了个K题,一开始想假了以为是个签到(数学题签到?)直接拿了个板子敲高斯消元,敲着敲着发现不对劲,后面看到有人过G了就去看了下G。

G题说的是,\(N\)块木板,每块长度是\(a_i\),每块木板最下/最上有个黑棋/白棋,每轮每个人只能移动一个木板上的一个棋子,移动任意步数,不能跨越对方棋子,不能操作者输,读完题想了想是个很裸的Nim,直接写了(不过写挂一个地方吃了一发罚时)。

接着是E题,给一个\(n\times m\)的棋盘,和一个整数\(k\),两个人轮流在棋盘上放置observer,某个人操作完之后存在一个observer,使得所有\(k\times k\)的矩形都包含这个observer的时候游戏结束,或者没有人能操作的时候游戏结束,最后一个操作的人获胜。稍微想一下会发现,如果\(n\leq 2k-1,m\leq 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+T\log n)\)地三分。

(有小伙伴问怎么算\(f[l,r]\),其实就是把若干个单调不减的子区间先划分成一个个块,预处理一下每个位置属于哪个块,以及每个块的信息、前\(i\)个块的答案,然后就可以\(O(1)\)查询了)

接着继续去看K题,仔细想了想YY了一个做法,感觉需要多项式的一些操作…不会写,算了算了。

接着一个比较可做的应该是A和F题,F听说是一个需要凸优化的dp,但是不会,A听说有个分形结构。

posted @ 2021-03-21 21:40  yoshinow2001  阅读(512)  评论(0编辑  收藏  举报