zoukankan      html  css  js  c++  java
  • Codeforces Round #700 (Div. 1) 题解&总结 A~E

    干完WC之后寒假颓废了两天,靠这场CF来点燃我的假期生活。

    事实证明颓废两天也是有代价的,所以这次比赛并不是很有感觉。并且由于是在家也不太习惯,又热,蚊子又多,甚至不太敢大力敲机械键盘。

    不过rating加0,看起来也没有亏呢(


    A

    第一题出交互题……亏我还想了蛮久的。

    可以考虑(doit(l,r))表示([l,r])中找到一个局部最小值。这个最小值一定存在,并且(a_l<a_{l-1},a_r>a_{r+1})

    (mid,mid+1),如果(a_{mid}<a_{mid+1}),则递归到(doit(l,mid)),否则递归到(doit(mid+1,r))

    发现这样操作一定满足存在局部最小值,所以肯定能找出解。

    (话说我自己写的时候问的是(mid-1,mid,mid+1)……)


    B

    一开始想到一个贪心,马上敲完之后写个(O(n^2))的DP验证一下发现它果然假了。

    后来一直想贪心想不出来,直到我发现这个(O(n^2))DP可以优化。

    我的DP是设(f_{i,j})表示处理完前(i)个位置,一个子序列末尾为(a_i),一个子序列末尾为(a_j)的贡献。可以线段树优化。

    (似乎和题解的DP不同)

    口胡一下题解的贪心(以最大值为例,最小值类似):维护两个序列的末尾(x,y),现在加入(z)

    1. (x=z)(y=z),此时把(z)加到(y)(x)末尾。
    2. 否则,比较(nxt(x),nxt(y)),哪个小就放到哪个后面。(nxt)表示相同颜色的下一个。

    This strategy is know as Bélády's algorithm or farthest-in-the-future cache/page replacement policy (see here for more information). The complexity is O(n) since we only need to preprocess every element's next occurrence.

    扯到高速缓存上去了呢。


    C

    比赛时不会做。

    先把([L,R])变成([1,R-L+1])

    构造。设(S_i)表示一个起点,满足出发到达的集合为([1,2^i])

    (S_0)直接向终点连。(S_k)可以通过复制(S_{k-1})的出边,然后加上边((S_k,S_{k-1},2^{k-1}))得到。

    得到这堆东西之后类似数位DP一样分成一个个二次幂处理即可。


    D

    想不出C然后想D,发现很水然后思想切了,比赛最后两分钟交了上去。pretest好多到结束都没有评测完。

    最终由于数组开小RE了……

    非常显然地这题可以随机化。

    用主席树维护。维护(f(u,r))表示节点(u)到根路径上,颜色不超过(r)的异或和。我把颜色视作时间维,对于每个询问暴力二分,时间(O(nlg^2 n))。但实际上如果把节点视作时间维,那可以直接线段树上二分,时间(O(nlg n))

    时间开5s随便过。


    E

    https://www.cnblogs.com/jz-597/p/14423340.html


    让我的寒假从这场rating+0的CF开始吧。

  • 相关阅读:
    IMP-00009: 导出文件异常结束
    Unknown collation: 'utf8mb4_unicode_ci'
    从 github 执行 git clone 一个大的项目时提示 error: RPC failed
    PHP 中获取当前时间[Datetime Now]
    wordpress 常用函数 checked(),selected(),disabled()
    github 有名的问题【ERROR: Permission to .git denied to user】
    SSH 基础
    mixed content 混合内容
    nginx gzip 模块配置
    markdown 书写表格
  • 原文地址:https://www.cnblogs.com/jz-597/p/14389167.html
Copyright © 2011-2022 走看看