全部评论 18

  • 你删了之前的题就把之前的评论删了,避免误导他人比如我

    22小时前 来自 上海

    2
  • 正解:越大的值越往右,从上到下按顺序排,线段树维护每个元素到左上角和右上角的距离先,这时左组元素的距离就是该元素左上角距离减左组元素左上角距离,右边元素则是右上角距离的差,维护最大值即可,最后反着跑一遍

    16小时前 来自 广东

    1
  • ?试着一眼一下
    大抵是设dp[i][j]为第i个数结尾j长的递增子序列,然后递推时遍历所有as找更小的dp[s][j-1],同时可以优化,每次遍历完一个元素在树状数组里以这个元素为下标插入一个值为dp[i][k]的数,求和就行了,树状数组你会吗
    默认你会了,但是复杂度疑似不过关
    等等k<=10那可以了

    昨天 来自 广东

    1
  • d

    昨天 来自 上海

    1
  • d

    昨天 来自 上海

    1
  • d

    昨天 来自 上海

    1
  • d

    昨天 来自 上海

    1
  • ddd

    昨天 来自 上海

    1
  • 线段树能做,但懒得想(

    16小时前 来自 广东

    0
  • 不对这里口误了,明天再聊

    18小时前 来自 广东

    0
  • 依旧从左到右依次插入,每次计算前面的。记某个数的位置加上自己的值为它的xyl值,以值域为下标xyl值为值建一个值域线段树,对于左边的(也就是值更小的)区间求最大xyl并取反,对于右边直接求最大值,对于左边的值加上当前元素的xyl,对于右边的减去当前元素的xyl,这两个之中求最小值,最后再反着跑一遍即可,自证不难,自己去推式子

    18小时前 来自 广东

    0
  • 突然想到了很简单

    18小时前 来自 广东

    0
  • 想到一个非常不可做的做法,推广到二维平面,位置是x坐标值域是y坐标,每次用线段树把当前值域左边的减去x距离,把上次值域右边的加上x距离,中间用暴力。为了复杂度不徦可以用莫队的方法分块式排序。求完x距离求y距离,二维莫队完成,最后反着再跑一遍。我是魔鬼吧。

    18小时前 来自 广东

    0
  • 有点KD树怎么回事

    18小时前 来自 广东

    0
  • 何意味

    昨天 来自 广东

    0
  • 定义 dpi,jdp_{i,j} 为以 AiA_i 结尾的长度为 jj 的递增子序列。则有 dpi,j=l=1i1[Al<j]×dpl,j1dp_{i,j}=\sum_{l=1}^{i-1} [A_l\lt j]\times dp_{l,j-1}。暴力是 O(kn2)O(kn^2) 的。

    考虑开 k+1k+1 个数据结构。当遍历到 AiA_i 时,第 jj 个数据结构可以:

    对于任意 xx,能快速查询 l=1i[Al<x]×dpl,j\sum_{l=1}^{i}[A_l\lt x]\times dp_{l,j}

    我们可以用树状数组实现。在每次 dpdp 结束后对该树状数组位置 AiA_i 上加上 dpi,jdp_{i,j}。这样查询就变成了查询这颗树状数组 [1,Ai1][1,A_i-1] 上的和。

    时间复杂度 O(knlogn)O(kn\log n)

    昨天 来自 广东

    0
  • 水题,定义f_x_k表示以x结尾的长度为k的递增子序列数量

    昨天 来自 浙江

    0
    • 至于如何转移显然 fx,k=i=1x1fi,k1f_{x,k}=\sum_{i=1}^{x-1}f_{i,k-1}

      昨天 来自 浙江

      0
    • 求和部分用bittree维护

      昨天 来自 浙江

      0
    • 教一个小技巧,注意到n的范围是1e5,容易想到正解复杂度八成就是nlogn,然后又知道是树状数组,可以直接猜到正解的结构是一个O(n)循环,里面套了一些树状数组的操作,然后看到k是10,也就是常数,所以正解肯定是以k为突破口的

      昨天 来自 浙江

      0

热门讨论