zoukankan      html  css  js  c++  java
  • [比赛记录]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听说有个分形结构。

  • 相关阅读:
    程序员第一定律:关于技能与收入
    Android——全屏显示的两种方式
    Android与JavaScript方法相互调用
    IT职场人生:找谁占卜
    Linux 2.6.23开始使用CFS(complete fair schedule),线程Priority不再有效
    如何查看一份linux kernel source的版本?
    tar解包的时候如何exclude一些目录
    rsync通过SSH来同步两台机器上的内容
    ArchLinux下配置TPLink WN550G PCI网卡为无线AP
    配置Linux下的时间服务器,让一批机器和一台机器时间同步
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/14564064.html
Copyright © 2011-2022 走看看