• [比赛记录]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 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听说有个分形结构。

  • 相关阅读:
    django中使用redis保存session(转)
    Python操作Redis(转)
    Django 中 app_name (应用命名空间) 和 namespace (实例命名空间) 的区别
    零开始Android逆向教程(一)——初探Android逆向
    python基础网络编程--转
    安全建设之平台搭建
    从信息安全弃坑到虚拟化的悲哀和无奈之感
    Apache 性能配置优化
    反爬虫和抗DDOS攻击技术实践
    DockerCon2017前瞻
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/14564064.html
Copyright © 2020-2023  润新知