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

    2019牛客暑期多校训练营(第八场)

    A. All-one Matrices

    solved by rdc 84min -2

    做法

    • 枚举下界 x,记录每个位置向上延伸 1 的高度,枚举列,单调栈预处理左右侧第一个比当前高度小的。
    • 判断 x+1 行,左右界之间是否全为 1
      问题。

    C. CDMA

    题意 构造矩阵,使得任意两行点积为 0

    做法 样例具有很强的暗示性,我们可以用 k 阶矩阵,构造 k+1 阶矩阵。


    D. Distance

    题意 三维空间,插入点, 查询与某个点曼哈顿距离最小点。

    比赛中做法

    • 注意到 n*w*h 不太大。
    • 一定存在两维,乘积小于等于 (100000^{frac{2}{3}})
    • 枚举这两维,bitset 维护另一维。(bitset 带查询后继功能,在这个问题上比 set 不知道高哪里去了)
    • 然后就 TLE 了,因为不会开大小由变量决定的 bitset
    • 然后 F0_0H 急中生智,把代码复制了 5 遍,就过了。928ms / 1000ms
    • 比赛时的做法就是个憨憨。说不定哪天就 1500ms / 1000 ms 了

    做法2.0

    • 定期重构。
    • 题目不是要插点嘛,我们弄一个好大的桶 A,一个容量为 E 的桶 B,装插入的点。
    • 每插入一个点,先扔进桶 B,桶 B 满了呢?把桶 B 中所有的点倾倒入桶 A,这时建超级源点向桶 A 中的点连边权为 0 的边,跑 BFS,重新解析这个世界。
    • 对于查询,如果与它距离最近的点在桶 A 中,那好办,查一查上次 BFS 跑出来的 dis 数组。如果在桶 B 中,也好办,桶 B 中至多 E 个元素,for 一下。
    • E 取到 (sqrt{nhw}) 就 win 了。
    • 写了写,E 取 500 AC(850 ms),E 取 316 TLE,code
    • 再改了一下,不要每次都拿着 A 桶里的所有点跑 BFS,保留上一次的 BFS 数组,把倾倒进去的点距离设为 0,跑 BFS 即可。155 ms code

    E. Explorer

    做法

    • 线段树时间分治模板题
    • 把动态维护二分图的代码改一改就能过

    I. Inner World

    upsolved

    问题的转化

    1. 注意到标号为 x 的点,在每棵树都有确定的爸爸,建树,求 DFS 序。
    2. 注意到子树内的点 DFS 序是一段连续的区间。
    3. 二维偏序!

    做法


    J. Just Jump

    题意 有 0~L,L+1 个石头,每次至少需要往前跳 d 个石头,第 t[i] 步不能到达 p[i] 求跳到 L 的方案数。

    做法

    • HYNB!
    • 对限定条件,按照 (p) 排序。
    • 考虑容斥,(f[i][j]) 表示,选择 (i) 个限定条件违反掉,(id) 最大的为 (j) 的方案数。
    • 其实我们只关心 (i) 的奇偶性。
  • 相关阅读:
    【Alpha阶段】第四次Scrum Meeting
    【Alpha阶段】第三次Scrum Meeting
    【Alpha阶段】第二次Scrum Meeting
    项目复审——Alpha阶段
    团队作业7-Alpha冲刺之事后诸葛亮
    团队作业6-展示博客
    Alpha阶段发布说明
    团队作业5-测试与发布
    冲刺博客-8
    冲刺博客-7
  • 原文地址:https://www.cnblogs.com/FST-stay-night/p/11335200.html
Copyright © 2011-2022 走看看