题目链接
题意:
给定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
?
?