9.4 滴滴笔试-题解

第一题 选取尽量多的元素,但其中最大值不能超过平均值的k倍

法1:从大到小排序,然后尺取一下
法2:二分

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

int n, k;
long long a[200005];

bool cmp(int x, int y) {
    return x > y;
}

int main() {
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    sort(a + 1, a + n + 1, cmp);

    int l = 1, r = 1, ans = 1;
    long long sum = a[1];
    while (r <= n) {
        while (l < r && sum / (double)(r - l + 1) * k < (double)a[l]) {
            sum -= a[l];
            l++;
        }
        ans = max(ans, r - l + 1);
        if (r == n) {
            break;
        }
        r++;
        sum += a[r];
    }

    cout << ans << endl;

    return 0;
}

第二题 定义f(x)=x的十进制各位的异或和,最多70000次询问,询问[L,R]中f(x)为t的值有多少个。1<=L<=R<=70000

预处理+前缀和,离线查询

#include <algorithm>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;

int n;
int l[100005], r[100005], q[100005], ans[100005];
int sum[70005][16];

void init() {
    for (int i = 0; i <= 70003; i++) {
        int t = i;
        int x = 0;
        while (t) {
            x ^= t % 10;
            t /= 10;
        }
        sum[i][x] = 1;
    }

    for (int i = 0; i < 16; i++) {
        for (int j = 0; j <= 70003; j++) {
            if (j == 0) {
                continue;
            }
            sum[j][i] += sum[j - 1][i];
        }
    }
}

int main() {
    init();
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> l[i];
    }
    for (int i = 1; i <= n; i++) {
        cin >> r[i];
    }
    for (int i = 1; i <= n; i++) {
        cin >> q[i];
    }

    for (int i = 1; i <= n; i++) {
        if (q[i] > 15) {
            ans[i] = 0;
            continue;
        }
        if (l[i] == 0) {
            ans[i] = sum[r[i]][q[i]];
        }
        else {
            ans[i] = sum[r[i]][q[i]] - sum[l[i] - 1][q[i]];
        }
    }

    cout << ans[1];
    for (int i = 2; i <= n; i++) {
        cout << ' ' << ans[i];
    }
    cout << endl;

    return 0;
}
#笔试##滴滴笔试##滴滴#
全部评论
有大佬帮忙看看第二题吗,感谢!思路差不多没过,不知道哪里没注意
点赞 回复 分享
发布于 2022-09-05 09:07 安徽
请问第一题为啥从大到小可以而从小到大排不行呀?
点赞 回复 分享
发布于 2022-09-05 09:04 陕西
第一题同解法,过了64,会是vector的影响吗?
点赞 回复 分享
发布于 2022-09-04 23:48 天津
为什么第一题中的均值的k倍是和a[l]比,而不是和窗口中的最大值比?
点赞 回复 分享
发布于 2022-09-04 23:40 陕西
你这个a了吗?
点赞 回复 分享
发布于 2022-09-05 11:04 四川
好奇怪,第二题每个区间我只算第一个数的漂亮数x,区间后面的数的漂亮数只需要把x累积与1xor就行,然后比较是不是漂亮数,ac了,下来我越想越不对啊,咋ac的,感觉是他的实例不完备,被我偷鸡了
点赞 回复 分享
发布于 2022-09-05 00:41 四川
第一题能AC吗
点赞 回复 分享
发布于 2022-09-04 21:48 湖南

相关推荐

头像
04-27 15:11
已编辑
华东师范大学 算法工程师
暑期实习从2月开始投,面了两个月,流程该挂的都挂完了,腾讯字节一共号称是1.7w个hc,不知道都发给谁了,估计今年秋招要难顶。Timeline米哈游、美团、蚂蚁、微软等公司直接简历挂穿,没进面。携程:3.3&nbsp;投递、测评3.12&nbsp;笔试3.18&nbsp;一面3.25&nbsp;二面4.13&nbsp;ai面(hr面)4.14&nbsp;英语测评4.23&nbsp;offer(已拒)腾讯:2.6&nbsp;测评2.28&nbsp;wxg一面3.5&nbsp;wxg二面(挂)3.11&nbsp;teg一面3.21&nbsp;teg二面(取消)3.31&nbsp;teg一面4.10&nbsp;teg二面(挂)4.21&nbsp;wxg一面4.24&nbsp;wxg二面(挂)字节:1.28&nbsp;aml约面(取消)3.17&nbsp;火山一面(挂)4.8&nbsp;aml一面(挂)4.20&nbsp;抖音data一面(挂)阿里:3.23&nbsp;投递、测评3.28&nbsp;笔试3.31&nbsp;淘天一面4.8&nbsp;钉钉一面4.9&nbsp;淘天二面4.10&nbsp;阿里控股一面4.12&nbsp;钉钉二面(取消)4.15&nbsp;淘天hr面4.16&nbsp;淘天offer(已接)4.21&nbsp;高德一面(取消)4.22&nbsp;淘宝闪购一面(取消)面试最大的感触是,现在撞上ai转型,一堆老业务急着转向,新业务非常不成熟,研究型的组bar非常高根本进不去,业务侧挂着算法的岗位干的都是工程活,面试却又要问算法,另外agent的落地也远没有那么广,绝大多数还是那套写死的系统调一下llm&nbsp;api或者做做rag,其余少部分真的在搭agent的,基本不能在线上服务用什么很智能的模型,现阶段成本太高,进去大概率就是给垃圾模型从工程方面兜底,除了业务场景的应用和数据经验以外,技术方面很难有什么提升。算法岗做不了基模的还是去搜广推好,之前判断失误了完全没投,秋招不知道还进不进得去。
嵌入式的小白:不错啊,淘天也是挺好的,恭喜
我的求职进度条
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
4
13
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务