• Magolor的数据结构作业


    (CodeForces 706E ~Working routine)
    给出一个矩阵,每次操作交换两个子矩阵,求最后状态。

    使用链表存储,每次交换后,影响到的之后矩阵边缘的指针,暴力修改。
    (~~~~)
    (CodeForces 985E ~Pencils and Boxes)
    每个铅笔盒至少放(k)个铅笔,每个盒子中的铅笔价值的绝对值之差不能超过(d)。求是否有方案。

    放在一个盒子里的铅笔价值是连续的一段,这样一定不劣。使用线段树维护合法的权值起始位置。
    (~~~~)
    (CodeForces 316E3 ~Summer Homework)
    维护一个序列,询问(Fibonacci)数列作为系数乘区间每个元素的和。

    常见的区间和维护。可以考虑维护矩阵,实际上没必要,因为有(f[i]=a*f[0]+b*f[1]),其中(a)(b)也是(Fibonacci)数列相邻的数,可以推得规律。
    (~~~~)
    (CodeForces 1191F ~Tokitsukaze and Strange Rectangle)
    平面上给一个点集,你可以用一种上边界为 (y=INF) 的矩形来包含一个子点集,求一共可以包含多少种子点集。

    将点排序,主关键字(y)从大到小,副关键字(x)从小到大。树状数组维护横坐标为(x)的有多少点。就可以统计了。
    (~~~~)
    (Gym 215177H)天天爱射击
    小C现在知道了游戏中(n)块木板位置,每个木板有个耐久值,以及知道了(m)个子弹射击位置。现在问你每个子弹射出去以后,有多少木板会碎掉?

    以射击位置为时间轴,射击时间(顺序)为权值建立权值线段树并可持久化。枚举木板,在(rt[R])(rt[L-1])相减的树中寻找答案。
    (~~~~)
    (CodeForces 689D ~Friends and Subsequences)
    给定(a)数组和(b)数组,求有多少区间[L,R]使得(min(a[L],a[L+1] cdots a[R]))等于(max(b[L],b[L+1] cdots b[R]))

    枚举左端点,倍增求右端点。
    (~~~~)
    (HDU 5726 ~GCD)
    给出数列(a),询问求(gcd(a[L],a[L+1] cdots a[R])),以及整个数列的子区间(gcd)与这个(gcd)相等的有多少个。

    倍增预处理(gcd)。枚举子区间起点,由于(gcd)随右端点单调递减,而且递减很快(log)。因此可以二分gcd相等的区间统计个数。
    询问时直接回答。

  • 相关阅读:
    Hibernate系列教材 (五)- 基础
    Hibernate系列教材 (四)- 基础
    Hibernate系列教材 (三)- 基础
    Hibernate系列教材 (二)- 基础
    Hibernate系列教材 (一)- 基础
    Spring系列教材 (六)- 注解方式测试
    LDU20级新生排位赛第三场
    POJ3678——Katu Puzzle(2-SAT)
    进阶指南图论——闇の連鎖 I. 黑暗的锁链(树上差分+LCA)
    2021年度训练联盟热身训练赛第一场——Early Orders(单调栈)
  • 原文地址:https://www.cnblogs.com/lzhAFO/p/11699130.html
Copyright © 2020-2023  润新知