7.23小红书笔试ak

T1:直接模拟 或者上等差数列求和公式都可以

void solve(int u){
    cin>>n>>k;
    ll res=0;
    for(int i=1;i<=n;i++){
        res+=1ll*i*k;
    }
    cout<<res<<endl;
}

T2:贪心+二分

先按照左端点排序,枚举第i个区间 贪心的思想:肯定先把第i个区间的数全选了,然后再往左枚举 去二分找到能选的一个最大的区间下标

void solve(int u){
    cin>>n>>m>>k;
    for(int i=1;i<=m;i++){
        cin>>w[i].x>>w[i].y;
        w[i].x++;
    }
    sort(w+1,w+m+1);
    for(int i=1;i<=m;i++){
        int len=w[i].y-w[i].x+1;
        s[i]=s[i-1]+len;
    }
    int res=0;
    for(int i=1;i<=m;i++){
        int len1=s[i]-s[i-1];
        if(len1>=k){
            cout<<k<<endl;
            return;
        }
        int target=w[i].x-k+len1;
        int l=1,r=i-1;
        while(l<r){
            int mid=l+r>>1;
            if(w[mid].y>=target)r=mid;
            else l=mid+1;
        }
        if(w[r].y>=target){
            int len2=s[i-1]-s[r]+w[r].y-max(target,w[r].x)+1;
            res=max(res,len1+len2);
        }

    }
    cout<<res<<endl;
}

T3:经典前后缀分解:首先考虑不替换x 就是LeetCode53最大子数组和

替换的话 枚举替换第i个位置,把整个区间拆分成左右两个部分 最大和就是x+max(0,left)+max(0,right)

right可以使用dp预处理

void solve(int u){
    cin>>n>>x;
    for(int i=0;i<n;i++){
        cin>>w[i];
    }
    ll res=-1e18;
    memset(g,-0x3f,sizeof g);
    for(int i=n-1;i>=0;i--){
        g[i]=max(g[i+1],0ll)+w[i];
        res=max(res,g[i]);
    }
    ll s=0;
    for(int i=0;i<n;i++){
        s=max(0ll,s);
        res=max(res,s+x+max(0ll,g[i+1]));
        s+=w[i];
    }
    cout<<res<<endl;
}

#24提前批##小红书提前批##后端技术交流#
互联网笔试真题题解 文章被收录于专栏

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

全部评论
yhy太神了!
5 回复 分享
发布于 2023-07-23 21:19 北京
大佬
4 回复 分享
发布于 2023-07-23 21:25 福建
最后一题求得妙啊
3 回复 分享
发布于 2023-07-23 21:32 上海
1 回复 分享
发布于 2023-07-23 21:26 重庆
佬!
点赞 回复 分享
发布于 2023-07-23 21:24 浙江
啊这 没有很厉害 只是运气好点佬们别奶了球球
点赞 回复 分享
发布于 2023-07-23 21:26 安徽
请教一下第二题为什么要先排序一下啊?
点赞 回复 分享
发布于 2023-07-23 21:36 上海
太强了
点赞 回复 分享
发布于 2023-07-23 21:36 上海
大佬牛的牛的
点赞 回复 分享
发布于 2023-07-23 21:37 广东
牛啊牛啊
点赞 回复 分享
发布于 2023-07-23 21:42 四川
第一题可以直接o1
点赞 回复 分享
发布于 2023-07-23 21:44 广西
m
点赞 回复 分享
发布于 2023-07-23 21:52 安徽
大佬太强啦
点赞 回复 分享
发布于 2023-07-24 09:36 上海
最后一题你写的好复杂
点赞 回复 分享
发布于 2023-07-24 12:21 上海
大佬大佬
点赞 回复 分享
发布于 2023-07-26 11:23 北京
太强了
点赞 回复 分享
发布于 2023-07-26 11:23 北京
点赞 回复 分享
发布于 2023-07-26 12:49 广东
最后一道题滑窗+单调队列求最小值然后替换成x,行不
点赞 回复 分享
发布于 2023-07-28 10:57 湖北

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
评论
50
138
分享
牛客网
牛客企业服务