The Delivery Dilemma

题目链接

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;
    } 
}
思维 文章被收录于专栏

思维题都会了,ACM金牌就稳了! 我骗你的!

全部评论

相关推荐

2024-11-13 19:59
中南大学 自动化
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
QwQqvq:这种直接口头上答应,骗面试,面完了直接拉黑,相当于给自己攒面经了(
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务