atcoder#ABC254H. [ABC254Ex] Multiply or Divide by 2

[ABC254Ex] Multiply or Divide by 2

题目描述

N N 個の非負整数からなる多重集合 $ A=\{\ a_1,\ldots,a_N\ \},\ B=\{\ b_1,\ldots,b_N\ \} $ が与えられます。
あなたは以下の操作を好きな順番で何度でも行えます。

  • A A に含まれている非負整数を 1 1 つ選び、x x とする。 A A から x x 1 1 つ削除し、代わりに 2x 2x 1 1 つ追加する。
  • A A に含まれている非負整数を 1 1 つ選び、x x とする。 A A から x x 1 1 つ削除し、代わりに  x2  \left\lfloor\ \frac{x}{2}\ \right\rfloor 1 1 つ追加する。( x  \lfloor\ x\ \rfloor x x を超えない最大の整数)

あなたの目的は A A B B を(多重集合として)一致させることです。
目的を達成することが出来るかどうかを判定し、出来る場合は必要な操作回数の最小値を求めてください。

输入格式

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

N N a1 a_1 \ldots aN a_N b1 b_1 \ldots bN b_N

输出格式

目的を達成出来る場合は必要な操作回数の最小値を出力せよ。出来ない場合は -1 を出力せよ。

题目大意

给定大小为 n n 的集合 A A B B ,你可以对集合 A A 中的元素 ai a_i 进行两种操作,分别为 aiai2 a_i \leftarrow \lfloor \dfrac{a_i}{2} \rfloor ,和 aiai×2 a_i \leftarrow a_i \times 2 。你需要操作集合 A A 直至集合 A,B A, B 完全相同。求最小操作次数,若无解输出 -1

3
3 4 5
2 4 6
2
1
0
1
-1

提示

制約

  • 1  N  105 1\ \leq\ N\ \leq\ 10^5
  • $ 0\ \leq\ a_1\ \leq\ \ldots\ \leq\ a_N\ \leq\ 10^9 $
  • $ 0\ \leq\ b_1\ \leq\ \ldots\ \leq\ b_N\ \leq\ 10^9 $
  • 入力はすべて整数

Sample Explanation 1

次のようにして 2 2 回の操作で目的を達成できます。 - x=3 x=3 とし、A A から x (=3) x\,\ (=3) 1 1 つ削除し代わりに 2x (=6) 2x\,\ (=6) 1 1 つ追加する。これによって A={4,5,6} A=\{4,5,6\} となる。 - x=5 x=5 とし、A A から x (=5) x\,\ (=5) 1 1 つ削除し代わりに $ \left\lfloor\ \frac{x}{2}\ \right\rfloor\ \,\ (=2) $ を 1 1 つ追加する。これによって A={2,4,6} A=\{2,4,6\} となる。

Sample Explanation 2

{ 0 } \{\ 0\ \} { 1 } \{\ 1\ \} にすることは出来ません。