• Google Kick Start 2020 Round C


    ac代码

    A. Countdown

    for循环跑一跑,没啥好说的。

    B. Stable Wall

    如果(s_{i,j} e s_{i+1,j}),那么说明(s_{i+1,j})必须在(s_{i,j})之前先放,对于这种优先级关系很自然的就能想到拓扑排序。然后建图拓扑排序跑一跑就完事了。

    C. Perfect Subarray

    这题直接暴力。首先记录前缀和。对于以(i)开始的子段,枚举所有的完全平方数(sq),符合条件的子段数等于满足(sum_j = sum_{i-1} + sq, j in [i, n])(j)的个数。用一个桶存放(sum_i)出现的次数,然后暴力跑就可以在(O(nsqrt{10^7}))的时间内解决本题。

    D. Candies

    将序列(a)按下标的奇偶分为两个,分别用两个线段树(T_1)(T_2)维护,主要维护(a_i imes i)的区间和以及(a_i)的区间和。

    修改和普通的线段树一样,这里不再赘述。

    然后就是回答询问了,对于询问((l,r)),将其划分为两类:左端点为奇数和左端点为偶数。

    对于左端点为奇数的询问,我们可以通过(T_1)获取(a_i imes i)([l,r])的区间和,然后减去((l-1))(a_i)([l,r])的区间和,就是答案中加上去的部分;通过(T_2)获取(a_i imes i)([l+1, r])的区间和,然后减去((l-1))(a_i)([l+1,r])的区间和,就是答案中减去的部分。

    左端点为偶数的也差不多,奇数的改改就可以了。

    总结

    这场题目都是一眼题,就是C题因为犯了低级失误导致交了5发才过,不然我应该可以做到50minAK。

  • 相关阅读:
    单调队列
    2019牛客暑期多校训练营(第一场)
    没有上司的舞会
    飞碟解除器
    最小费用最大流
    prim
    merge_sort
    CCF认证之——相反数
    CCF考试认证模拟练习——数字排序
    算法之分治法
  • 原文地址:https://www.cnblogs.com/zengzk/p/12907628.html
Copyright © 2020-2023  润新知