問題一覧 > 通常問題

No.2844 Birthday Party Decoration

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 86
作問者 : 👑 AngrySadEight / テスター : Ayuna torisasami4
2 ProblemId : 11139 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-07-19 16:22:34

問題文

無限に長い数直線上に,Alice の家と店があります.Alice の家は,数直線上の座標 XX にあります.また,全ての非負整数座標上に 11 つずつ店があります.

Alice は,家で誕生日パーティを開くにあたり,装飾品を買うことにしました.

装飾品は NN 種類あり,それぞれの装飾品を購入できる店の条件は以下の通りです.

  • ii 番目の装飾品は,店の座標 xxx&2ci0x \& 2^{c_i} \neq 0 を満たす場合に,またそのときに限り購入可能である.

ただし,a&ba \& b で非負整数 aabb のビット単位 AND を表します.

Alice は,次に示す行動を 00 回以上の好きな回数,また好きな順番で行うことができます.

  • 移動:好きな整数 yy をひとつ選ぶ.Alice の今いる座標を xx としたとき,Alice の座標を x+yx + y に変化させる.
  • 購入:Alice の今いる座標が非負整数のときにのみ行える.今いる座標にある店で購入できる商品を 11 個選び,購入する.

ここで,移動距離を,すべての移動における選んだ値の絶対値の総和と定義します.

最初,Alice は自身の家にいます.Alice が行動を繰り返すことにより,全ての種類の装飾品を 11 個ずつ購入して家に戻ってくるまでの移動距離として考えられる最小値を求めてください.

TT 個のテストケースが与えられるので,それぞれについて答えてください.

ビット単位 AND とは

22 個の非負整数 aabb のビット単位 AND a&ba \& b は,以下のように定義されます.

  • a&ba \& b22 進表記した際の 2k2^k の位の値は,a,ba, b それぞれを 22 進表記した際の 2k2^k の位の両方が 11 であれば 11,そうでなければ 00 であるとする.
  • 例えば,3&5=13 \& 5 = 1 となる.(22 進表記すると 011&101=001011 \& 101 = 001

制約

  • 入力は全て整数である.
  • 1T10001 \leq T \leq 1000
  • 1N601 \leq N \leq 60
  • 0c1<c2<<cN<600 \leq c_1 < c_2 < \dots < c_N < 60
  • 0X<2600 \leq X < 2^{60}

入力

入力は以下の形式で標準入力から与えられる.

TT
case1\mathrm{case}_1
case2\mathrm{case}_2
\vdots
caseT\mathrm{case}_T

各テストケースは以下の形式で与えられる.

NN XX
c1c_1 c2c_2 \dots cNc_N

出力

TT 行出力せよ.i(1iT)i(1 \leq i \leq T) 行目には,ii 番目のテストケースにおける答えを出力せよ.

サンプル

サンプル1
入力
4
2 10
0 2
1 0
3
4 15
0 1 2 3
5 20240822
0 5 7 8 18
出力
4
16
0
2

11 個目のテストケースについて,次のように行動するのが最適です.

  • まず,家から座標 1111 に移動する.
  • 次に,座標 1111 にある店で 11 種類目の装飾品を購入する.
  • 次に,座標 1111 から座標 1212 に移動する.
  • 次に,座標 1212 にある店で 22 種類目の装飾品を購入する.
  • 最後に,座標 1212 から家に戻る.

このときの移動距離は,44 となります.なお,この一連の流れを図に表すと以下の通りとなります.

22 個目のテストケースについて,装飾品を買える家から最も近い店は座標 88 にある店です.したがって,座標 00 から座標 88 に移動し,座標 88 で装飾品を購入し,座標 88 から座標 00 に移動する,という行動が最適です.このときの移動距離1616 となります.

33 個目のテストケースについて,Alice の家と同じ座標にある店で全ての装飾品を購入できます.したがって,移動距離の最小値は 00 となります.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。