8.26美团笔试五道题题解

T1

二分答案

经典二分答案题,二分答案天数mid 然后根据x和y计算最终成长值是否>=z

bool check(int mid){
    return 1ll*mid*x+1ll*mid/3*y>=z;
}
void solve(int u) {
    cin>>x>>y>>z;
    int l=0,r=1e9;
    while(l<r){
        int mid=l+r>>1;
        if(check(mid))r=mid;
        else l=mid+1;
    }
    cout<<l<<endl;
}

T2

纯模拟,注意上取整即可

void solve(int u) {
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        int k,c;
        cin>>k>>c;
        int cost=(c+k-1)/k;   //上取整
        for(int j=1;j<k;j++){
            int p;
            cin>>p;
            res[p]+=cost;
        }
    }
    for(int i=1;i<=m;i++)cout<<res[i]<<" ";
}

T3

贪心:维护一个大根堆,每次取出最大值和次大值进行操作(记得开long long)

void solve(int u) {
    cin>>n>>k;
    priority_queue<long long>heap;  //大根堆
    for(int i=0;i<n;i++){
        int x;
        cin>>x;
        heap.push(x);
    }
    while(k--){
        auto x=heap.top();heap.pop();
        auto y=heap.top();heap.pop();
        heap.push((x*y)%mod);heap.push(1);
    }
    ll res=0;
    while(heap.size()){
        res=(res+heap.top())%mod;
        heap.pop();
    }
    cout<<res<<endl;
}

T4

贪心:田忌赛马的思想,让a的最大值与b的最小值匹配,a的次大值与b的次小值匹配...虽然说b数组是固定,但其实是可以排序之后匹配的,这样代码会好写一写

void solve(int u) {
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<n;i++)cin>>b[i];
    sort(b,b+m);
    sort(a,a+n);
    int res=0,minnum=1e9;
    for(int i=0;i<n;i++){
        int x=a[i]+b[n-i-1];
        if(x<1||x>m){
            puts("No");
            return;
        }
    }
    puts("Yes");
}

T5

设s[i]为1~i的前缀和大小

如果(i,j]区间满足平均值为k 则有s[j]-s[i]=(j-i)*k

交换一下式子即有s[j]-j*k=s[i]-i*k

因此使用哈希表维护s[i]-i*k即可

int T, a[N],w[N],k,n;
int res=-1;
void solve(int u) {
    cin>>n>>k;
    for(int i=1;i<=n;i++)cin>>w[i];
    map<long long,int>mp; 
    mp[0]=0;
    long long sum=0;
    for(int i=1;i<=n;i++){
        sum+=w[i];
        if(mp.count(sum-k*i)){
            res=max(res,i-mp[sum-k*i]);  //更新最大长度
        }
        else{
            mp[sum-k*i]=i;
        }
    }
    cout<<res<<endl;
}

#后端开发##秋招##美团##互联网##笔试#
互联网笔试真题题解 文章被收录于专栏

收录近两年互联网公司笔试真题解析,并提供Java,Python,C++三种语言版本的代码

全部评论
擦,最后一题只想到前缀和,没想到后面这一步。 第二题直接模拟只过了50%,很奇怪
2
送花
回复
分享
发布于 2023-08-26 23:42 浙江
yhy 太强了!
点赞
送花
回复
分享
发布于 2023-08-26 19:31 北京
秋招专场
校招火热招聘中
官网直投
t1可以O(1)吧
点赞
送花
回复
分享
发布于 2023-08-26 19:39 江苏
T3都对将push的值取余了,为什么heap还要long long类型
点赞
送花
回复
分享
发布于 2023-08-26 20:36 江苏

相关推荐

6 11 评论
分享
牛客网
牛客企业服务