2019年10月12日土曜日

JOI2014 予選 F - 財宝

JOI2014 予選 F - 財宝

ある財宝の取り方について、Annaの取った財宝の市場価値の総和をxAx_A、BrunoのそれをxBx_Bとし、貴重度の総和も同様にyA,yBy_A, y_Bとする。xAx_AxBx_Bの差を一定以内におさめつつ、yAy_AyBy_Bの差を最大化する問題である。

総当たりすると間に合わないので、財宝の集合SSを半分にわけてS1S_1S2S_2とする。SSからの財宝の取り方は3S3^{|S|}通りあるので、財宝の取り方全体の集合を3S3^Sのように書くことにする。

ある取り方t3S1t \in 3^{S_1}について、二人の取り分の市場価値の差(Anna - Bruno)をΔx\Delta xとし、貴重度の差をΔy\Delta yとする。この時、S2S_2からの財宝のある取り方が有効であるのは、その市場価値の差が[DΔx,DΔx][-D -\Delta x, D - \Delta x]に入っている場合であり、その条件下で貴重度の差は大きければ大きいほどよい。したがって、3S23^{S_2}を市場価値の差の昇順でソートしておけば、区間[DΔx,DΔx][-D -\Delta x, D - \Delta x]に関して貴重度の差の最大値を求める問題になる。これは平衡二分木で処理できるし、スライド最大値でもできる。ソートが律速で計算量はO(3N/2N){\mathcal O}(3^{N/2}N)


3151.4×1073^{15} \simeq 1.4 \times 10^7のソートが想定解の問題を初めて見た……