ruby ARC 033-Cデータ构造

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby ARC 033-Cデータ构造相关的知识,希望对你有一定的参考价值。

class BinaryIndexedTree
  def initialize
    @N=200_001
    @bit=Array.new(@N){0}
  end
  
  def add(k, x)
    while k<=@N
      @bit[k]+=x
      k+=(k&-k)
    end
  end
  
  def sum(k)
    ret=0
    while k>0
      ret+=@bit[k]
      k-=(k&-k)
    end
    ret
  end
end

q=gets.to_i
bt=BinaryIndexedTree.new
q.times do
  t, x=gets.split.map(&:to_i)
  case t
  when 1
    bt.add(x, 1)
  when 2
    l, u=0, 200_000
    while u-l>1
      m=(u+l)/2
      bt.sum(m)<x ? l=m: u=m
    end
    puts u
    bt.add(u, -1)
  end
end

以上是关于ruby ARC 033-Cデータ构造的主要内容,如果未能解决你的问题,请参考以下文章

ruby 再帰处理で再试行してみる。データ取得は他の关数にやらせるといいかも。

sql ダミーデータ作成

php データ膨大の时の配列ループ

css データURIスキームに変换する

css データURIスキームに変换する

python Elasticsearch bulkデータ生成