zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    【转】测试驱动开发
    【转】什么是“脚本语言”
    【转】“解决问题”与“消灭问题”
    【转】程序语言的常见设计错误(1)
    【转】解密“设计模式”
    【转】所谓软件工程
    【转】清华梦的粉碎
    算法知识目录整理
    买书不读是一种什么病?
    Linux 下socket通信终极指南(附TCP、UDP完整代码)
  • 原文地址:https://www.cnblogs.com/zengzk/p/12907628.html
Copyright © 2011-2022 走看看