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}))

  • 相关阅读:
    《Python 源码阅读》之 类型Type
    《Python 源码剖析》之对象
    KMP匹配算法
    Python的递归深度
    js验证手机号
    Jquery 实现 “下次自动登录” 记住用户名密码功能
    js注册读秒进度条
    div+css进度条
    SprignMVC+myBatis整合
    ssm控制输出sql(二)
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/13962254.html
Copyright © 2011-2022 走看看