#include<bits/stdc++.h> usingnamespace std; #define ll long long constint INF = 0x3f3f3f3f; constint N = 2e5 + 10; const ll mod = 1e9 + 7; int T; int n; ll a[N]; intcal(ll x){ for (int i = 30; i >= 0; i--) { if (x&(1ll << i)) { return i + 1; } } return0; } intmain(){ scanf("%d", &T); while (T--) { scanf("%d", &n); int ans = 0; for (int i = 1; i <= n; i++)scanf("%lld", &a[i]); for (int i = 2; i <= n; i++) { ll to = max(a[i - 1], a[i]); ans = max(ans, cal(to-a[i])); a[i] = to; } printf("%d\n", ans); } return0; }
#include<bits/stdc++.h> usingnamespace std; #define ll long long constint INF = 0x3f3f3f3f; constint N = 2e5 + 10; const ll mod = 1e9 + 7; int n; vector<int>G[N], de[N]; int d[N], cnt[2], ans; voiddfs(int u, int _fa, int dep){ d[u] = dep; if ((int)G[u].size() == 1) { de[d[u]].push_back(u); cnt[d[u] % 2]++; } for (int v : G[u]) { if (v != _fa)dfs(v, u, dep + 1); } int tmp = 0; for (int v : G[u]) { if ((int)G[v].size() == 1)tmp++; } ans -= max(0, tmp - 1); } intmain(){ scanf("%d", &n); for (int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); G[u].push_back(v); G[v].push_back(u); } ans = n - 1; dfs(1, 0, 1); if (cnt[0]&&cnt[1])printf("3 "); elseprintf("1 "); printf("%d\n", ans); return0; }