zoukankan      html  css  js  c++  java
  • 牛客网暑期ACM多校训练营(第四场)

    Rank Solved A B C D E F G H I J
    71/465 4/10 O Ø Ø O Ø O O . . Ø

    O: 当场通过

    Ø: 赛后通过

    .: 尚未通过

    A Ternary String

    solved by ch&chelly


    B Interval Revisited

    upsolved by chelly


    chelly's solution

    首先需要发现一个性质,即一个位置顶多被两条线段覆盖
    于是就可以dp了,首先将所有线段按照右端点从小到大排序
    dp[i][j]表示选了第i个线段,已经覆盖的区间为[1,a[i].r],上一个线段的右端点在j的情况下的和的最小值
    转移就枚举前面的一条线段,注意用前缀min优化
    时间复杂度(O(nm))

    C Chiaki Sequence Reloaded

    upsolved by chelly


    chelly's solution

    看见(a(n))(a(frac{n}{2}))的关系,要想到二进制
    经过简单分析发现ans(n)=cal(n)+cal(n/2)+cal(n/4)+cal(n/8)+..........
    其中cal(n)满足若n%40/3则cal(n)=1,若满足n%41/2则cal(n)=-1
    光分析出这样的性质仍然不够,我们考虑%4的意义,其实就是二进制的最后两位
    于是我们得出计算ans(n)的方法,就是考察相邻的两个二进制位,若相等则+1,若不等则-1
    于是就可以数位dp了

    D Another Distinct Values

    solved by ch


    ch's solution

    E Skyline

    upsolved by chelly


    chelly's solution

    每个点(x,y)对答案的贡献就是1-π(1-p[i]),其中i是(x,y)右上方的点
    那现在我们的操作就是对于每个点,把左下角的一个矩形全部乘上一个数,然后要询问最后的和
    第一想法是二维前缀和,但坐标范围太大,不行
    其实可以扫描线做,我们把扫描线从上往下扫,每层扫描线维护当前这个y对应的每个位置的值
    容易发现两个离散的y之间的答案是相同的,所以可以离散之后扫描线
    总结一下,就是我们从上往下扫描线,需要支持区间乘法,区间求和,这个直接用一个线段树即可

    F Beautiful Garden

    solved by chelly


    chelly's solution

    G Maximum Mode

    solved by syf


    syf's solution

    H Double Palindrome

    unsolved


    I Permutation

    unsolved


    J Hash Function

    upsolved by chelly


    用并查集维护f[i]表示从i位置向右看第一个没填的位置是哪
    然后用一个优先队列存下目前已经能填的数字(刚开始是那些a[i]%ni的数字)
    将目前优先队列里最小的那个数字(a[x],x)填完之后,我们会解锁一个新的可填位置,那就是t=find((x+1)%n),若a[t]~t中间都是填过了(即find(a[t])
    t),那么(a[t],t)就成为了一个可填的位置,将其加入优先队列
    最后将优先队列里出队的顺序输出即可
    时间复杂度(O(nlogn))

    Replay

    本场由chelly和ch线下组队f打的,syf在线上打。
    开场开了A题,ch给出了一个靠谱的做法,但是指数取模方面出了问题,就搁置了。然后chelly开F,syf开G,chelly头脑发热漏了些情况,2发WA之后才过了F。syf的G也写了好久,也WA了两发。于是换chelly写G,ch开始开构造题D。然而chelly用了两种方法提交G,也都WA了……陷入僵局……于是又把锅甩给了syf,syf写了一下之后过了。ch的D题也构造出了,A掉了。接下来chelly和ch转攻A,chelly发现指数取模问题可以用降幂公式解决,开始码码码。提交上去,T了。然后chelly发现一共29个模数,前23个模数都是2的次幂,形式是2的次幂模2的次幂,所以不需要快速幂,直接指数取模就行,修改了下之后就过了(赛后发现chelly的降幂是个假的降幂公式……感谢弱弱的数据)。此时离结束还剩1个半小时,chelly和ch开始想J,一直想不出来,就结束了。

  • 相关阅读:
    OS程序开发引用的第三方库之间出现冲突的处理方法
    ios的指令集(转)
    查看lib库支持的IOS指令集
    Audio Session Programming Guide
    Swift中文教程
    NSString 与 char * 互转
    id 与void *类型的转换(转)
    versions使用(转)
    superview透明问题
    Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
  • 原文地址:https://www.cnblogs.com/Amadeus/p/9385857.html
Copyright © 2011-2022 走看看