1483 化學變換
codeforces
基準時間限制:1 秒 空間限制:131072 kb 分值: 20
難度:3級演算法題
有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試劑的量弄成相等。
有兩種操作:
·把第i種的量翻倍,即第i種的量變成2ai。
·把第i種的量減半,除的時候向下取整,即把第i種的量變成 ⌊a
i2⌋ 。
現在所有的化學試劑的量已知,問最少要變換多少次,這些化學試劑的量才會相等。
樣例解釋:把8變成4,把2變成4。這樣就需要兩次就可以了。
input
單組測試資料。第一行有乙個整數n (1 ≤ n ≤ 10^5),表示化學物品的數量。第二行有n個以空格分開的整數ai (1 ≤ ai ≤ 10^5),表示第i種化學試劑的量。
output
輸出乙個數字,表示最少的變化次數。
input示例
34 8 2
output示例2
思路:統計給的數都可以得到哪些數,同時記錄得到這些數需要經過幾步,還要記錄這些數可以由幾個數得來。
比較那些可以同時由n個數得來的數的步驟數,求最小值。
code:
#include using namespace std;
const int ax = 1e5+1;
int vis[2*ax];
int num[2*ax];
void cal( int x )
p = x;
step = 0;
while( p )
}}else }}
int main()
int minus = 0x3f3f3f;
for( int i = 1 ; i < 2e5 ; i ++ )
cout << minus << endl;
return 0;
}
51nod 1483 化學變換
思路 統計每個所能到達的數和步數,奇數需要特別處理下 哎,模擬能力有待提高 include 因為範圍 2 1e5 列舉每個數能到達的範圍,奇數要特別處理一下 include include include include include include include include include...
51nod 1483 化學變換(思維)
1483 化學變換 codeforces 基準時間限制 1 秒 空間限制 131072 kb 分值 20難度 3級演算法題 有n種不同的化學試劑。第i種有ai公升。每次實驗都要把所有的化學試劑混在一起,但是這些試劑的量一定要相等。所以現在的首要任務是把這些化學試劑的量弄成相等。有兩種操作 把第i種的...
51Nod 1483 化學變換(思維 暴力)
思維題 找出每個數通過乘二除二所能得到的所有的數,並且記錄得到這個數乘二除二的次數和有多少個數能轉換為這個數 include include include using namespace std const int maxn 200005 const int inf 0x3f3f3f3f int ...