zoukankan      html  css  js  c++  java
  • AtC joi2017ho_c

    Portal

    这题并不是很难,但却是我所看了题解的题………………

    最大值最小,一眼二分。check 的时候就看是否能够 JOI 和 IOI 的极差都 (leq x)

    这个 JOIOI 的分布条件显然等价于,就是每行是前缀是 JOI,后缀是 IOI,然后每行的前缀长度要单调(增或减)。我们考虑枚举 JOI 部分的最小值((mathrm O!left(n^2 ight))),然后把那些 (in[mn,mn+x]) 的都给整合起来,然后搞出每行的最长前缀。这是个 two-pointers,显然每个位置只会被先加入后删除一遍,实时维护每行的最长前缀,如果删除位置在前面就把当前行最长前缀移到前面去,如果加入那就暴力往后拓展。这样易证每个位置只会被访问常数次,于是维护每行的最长前缀是平方的。

    但是我们对于每组最长前缀,还需要算剩下的 IOI 是否可以极差 (leq x) 啊。我们可以搞出右上角矩形和右下角矩形的最值数组,那么显然 IOI 的最值就是每行最长前缀右边的上 / 下面的最值最起来。这个当一行的最长前缀改变的时候,需要用 set 维护,多一个 log。那么总的就是 2log,不行了。

    于是我便去看题解了,发现一个性质(可能我大多数次看题解都是发现不了性质,然后看了题解就恍然大悟了吧)。我们考虑整个 (a) 数组的最小值,它显然不分布在 JOI 就在 IOI。我们从它入手,如果某省里面有它的话,就不用枚举最小值了,那就傻子都会了。于是我们考虑枚举最小值在 JOI / IOI,每种还要分成单调增和减两种情况,一共四种情况,每种随便搞出当前省的包含最多元素的状态,然后随便算一下就可以了。

    复杂度平方对数,code

  • 相关阅读:
    HTML知识点链接
    Apache和PHP的安装
    MySql的安装
    MY_FIRSH_MODULE
    【PAT甲级】1053 Path of Equal Weight (30 分)(DFS)
    Atcoder Grand Contest 039B(思维,BFS)
    Codeforces Round #589 (Div. 2)E(组合数,容斥原理,更高复杂度做法为DP)
    Codeforces Round #589 (Div. 2)D(思维,构造)
    【PAT甲级】1052 Linked List Sorting (25 分)
    【PAT甲级】1051 Pop Sequence (25 分)(栈的模拟)
  • 原文地址:https://www.cnblogs.com/ycx-akioi/p/solution-at2444.html
Copyright © 2011-2022 走看看