题目链接
https://codeforces.com/contest/1443/problem/B
解题思路
对数组a进行升序排列,如果让前i个快递员送,那么快递员所花费时间为a[i],剩下的由自己拿。
用前缀和存储自己拿的时间。
AC代码
#include<bits/stdc++.h> #define ll long long #define x first #define y second const int N=2e5+100; const int inf=0x3f3f3f3f; using namespace std; pair<ll,ll> p[N]; int T,n; ll sum[N],ans; int main() { cin>>T; while(T--) { cin>>n; for(int i=1;i<=n;i++) cin>>p[i].x; for(int i=1;i<=n;i++) cin>>p[i].y; sort(p+1,p+n+1); for(int i=1;i<=n;i++) sum[i]=sum[i-1]+p[i].y; ans=1e18; for(int i=0;i<=n;i++) ans=min(ans,max(p[i].x,sum[n]-sum[i])); cout<<ans<<endl; } }