rt,其它应该没啥问题,但是1ll<<use会爆炸,求优化QAQ
# pragma GCC optimize("Ofast,no-stack-protector")
# pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
# include <bits/stdc++.h>
# define I return
# define AK 0
# define IOI ;
using namespace std;
typedef long long ll;
typedef pair <int, int> pii;
int t, n, sum, x, lst, use;
bool flag;
int main () {
ios::sync_with_stdio (0);
cin.tie (0);
cout.tie (0);
cin >> t;
while (t --) {
cin >> n >> lst, sum = use = 0, flag = 0;
for (int i = 1; i < n; ++ i) {
cin >> x;
if (lst != 1 && x == 1)
flag = 1;
if (flag)
continue ;
use = ceil (log2 (max (1.0, ceil (log2 (lst) / log2 (x) * (1ll << use)))));
// cerr << use << ' ';
sum += use;
lst = x;
}
cout << (flag ? -1 : sum) << '\n';
}
I AK IOI
}
/*
1
9
16 2 4 2 256 2 4 2 8
*/