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,一直想不出来,就结束了。

  • 相关阅读:
    Tiny-Core-Linux 9.x:安装oracle【11g|】:艰难的旅程,不过,最终成功了!:mini-install
    调研高层次人才落户的补贴标准
    充当好基层治理的“绣花针”
    对互联网广告监管的几点实践与思考
    合抱之木,生于毫末;九层之台
    JVM
    Apex Salesforce
    maven 地址
    JVM
    使用jmap和MAT进行堆内存溢出分析
  • 原文地址:https://www.cnblogs.com/Amadeus/p/9385857.html
Copyright © 2011-2022 走看看