題目鏈接
題意:
給定n長的序列
每次可以選一個數 讓其 *=2 或者 /=2
問至少操作多少次使得所有數相等。
思路:
對於每個數,計算出這個數可以變成哪些數,以及變成那個數的最小步數。
cnt[i] 表示序列中有cnt個數可以變成i
step[i] 表示能變成i的 那些數 變成i的花費和是多少。
notice: if a[i] == 7, a[i] also can reach 6. by /=2 then *=2
7->3->1..
3->6->12
1->2->4
只要是奇數(不包括1) 就能花費2步到達 a[i]-1的位置
#include
#include
#include
#include
#include
#include