zoukankan      html  css  js  c++  java
  • 方格问题

    考虑如何回答询问。
    由于每个格子被加成多少在询问某个时间很难具体得知(或者得知时间复杂度太高),所以要换一种思路。
    注意到每个格子加上的都是正数,所以一个格子如果(geq L),则在后面的时刻它都会(geq L)
    考虑求出一个格子(geq L)的时间,这是个经典的问题(集训队作业矩阵乘法),使用扫描线+二维bit+整体二分即可解决。
    但是由于每一个格子出现的时间都在询问的时间之前,所以使用扫描线+bit即可计算。
    此部分时间复杂度(O(nmlog_2^2nm))
    (p_{i,j})表示(i,j)被加到(geq L)的时间。
    定义某路径长度为它经过的所有格子的(p)的最小值(mn)
    设当前询问时间为(t),则当(mn>t)的时候可以到达。
    求出(mn)也是个经典的问题(ZJOI2016 旅行者)。
    对网格沿着短边分治,在短边处合并答案。
    处理必须经过中线一个点的答案。
    从左边每个点到中线,右边每个点到中线进行dp。
    这样子一次询问时间复杂度最坏也不会超过(sqrt{nm})
    套用旅行者的分析可得时间复杂度为(O(nmlog_2^2nm+nmsqrt{nm}+qsqrt{nm}))

  • 相关阅读:
    Spring
    Spring
    Spring
    Spring
    JS 脱敏通用方法
    JS 实用技巧记录
    多快?好省!
    实战 | 如何使用微搭低代码实现按条件过滤数据
    2021腾讯数字生态大会落地武汉,微搭低代码专场等你来
    实战 | 如何使用微信云托管部署flask项目
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/13962254.html
Copyright © 2011-2022 走看看