zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 203 (Sponsored by Panasonic)

    D - Pond

    题目

    简要题意

    有一张 (n imes n) 的方格,((i,j)) 格子上的数字为 (a_{i,j})。你需要在这张方格里找到一个 (k imes k) 的方格使得中位数最小。

    中位数定义为数字第 (lfloor frac{k^2}{2} floor+1) 大的格子。

    数据范围与提示

    (1le kle nle 800, a_{i,j}le 1e9)

    解法

    看到 “中位数“,”最小“ 就自然地转化到二分。

    二分最小中位数,我们可以进行 (mathcal O(n^2)) 的判断:先对于数字大于 ( m mid) 的数的个数进行二维前缀和,然后枚举 (k imes k) 的方格左上角,计算出这个方格中数字大于 ( m mid) 的数的个数 (tmp)。容易发现,如果所有方格的 (tmp) 最小值小于 (lfloor frac{k^2}{2} floor+1) 就意味着 ( m mid) 可能是一个合法解,我们将 (rleftarrow m mid)。否则将 (l leftarrow ext{mid}+1)

    时间复杂度 (mathcal O(n^2 log a))

  • 相关阅读:
    IE6兼容问题
    清除浮动的几种方法
    CSS的继承性和层叠性
    CSS基础选择器复习
    梦与醒,进与退
    CSS的入门概念
    HTML的入门概念
    弹性布局整理
    点击评论加入输入框(笔记)
    css命名(笔记)
  • 原文地址:https://www.cnblogs.com/AWhiteWall/p/14846030.html
Copyright © 2011-2022 走看看