传送门 n份菜,可以选择饭店送,也可以自己拿,求总的花费时间最小 假设所有的都是自己拿,花的时间为二分的上界,枚举所有答案,判断当前情况下是否符合 #include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 10; int t,n,a[maxn],b[maxn]; bool check(long long x){ long long s = 0; for(int i = 1; i <= n; i++){ if(a[i] > x){ s += b[i]; } } return x >= s; } int main(){ ios::sync_with_stdio(0); cin >> t; while(t--){ cin >> n; long long l = 0,r = 0; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= n; i++){ cin >> b[i]; r+=b[i]; } while(l <= r){ long long mid = (l + r) / 2; if(check(mid)) r = mid -1; else l = mid + 1; } cout << l << endl; } return 0; }