9.3美团笔试C++代码参考

AK代码,仅供参考,虽然之前投实习的笔试也AK了但没发面试😭感觉美团还是看学历吧

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int a, b;
    cin >> a >> b;
    cout << max({0, b - a + 2, 11 - a});
    return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N = 5e4 + 10;
int n, d[N], res[N];
map<int, int> idx;
int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d", &d[i]);
        idx[d[i]] = i;
    }
    int cur = 0;
    for (auto it : idx)
    {
        res[it.second] = cur;
        if (cur == it.first)
        {
            cur++;
        }
    }
    for (int i = 1; i <= n; i++)
        printf("%d ", res[i]);
    return 0;
}
#include <bits/stdc++.h>

using namespace std;
const int N = 5e4 + 10;
int n, res[N], x;
vector<int> g[N];
char d[N];
bitset<30> b[N];
void dfs(int u)
{
    for (int ne : g[u])
    {
        dfs(ne);
    }
    b[u][d[u] - 'A'] = 1;
    for (int ne : g[u])
    {
        b[u] |= b[ne];
    }
}
int main()
{
    scanf("%d", &n);
    for (int i = 2; i <= n; i++)
    {
        scanf("%d", &x);
        g[x].push_back(i);
    }
    scanf("%s", d + 1);
    dfs(1);
    for (int i = 1; i <= n; i++)
    {
        printf("%d ", (int)b[i].count());
    }
    return 0;
}
#include <bits/stdc++.h>

using namespace std;
const int N = 3e4 + 10;
typedef long long LL;
int n, m, k, x;
LL c[N], a[N], b[N];
LL f[N];
struct node
{
    int l, r;
    LL v;
} tr[N << 2];

void pushup(int u)
{
    tr[u].v = max(tr[u << 1].v, tr[u << 1 | 1].v);
}

void build(int u, int l, int r)
{
    tr[u] = {l, r, 0};
    if (l == r)
    {
        tr[u].v = f[l];
        return;
    }
    int mid = (l + r) >> 1;
    build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);
    pushup(u);
}

LL query(int u, int l, int r)
{
    if (l > r)
        return -1e18;
    if (l <= tr[u].l && tr[u].r <= r)
    {
        return tr[u].v;
    }
    int mid = (tr[u].l + tr[u].r) >> 1;
    LL res = -1e18;
    if (l <= mid)
    {
        res = max(res, query(u << 1, l, r));
    }
    if (mid < r)
    {
        res = max(res, query(u << 1 | 1, l, r));
    }
    return res;
}

void modify(int u, int l, int r, LL x)
{
    if (l <= tr[u].l && tr[u].r <= r)
    {
        tr[u].v = x;
        return;
    }
    int mid = (tr[u].l + tr[u].r) >> 1;
    if (l <= mid)
    {
        modify(u << 1, l, r, x);
    }
    if (mid < r)
    {
        modify(u << 1 | 1, l, r, x);
    }
    pushup(u);
}

int main()
{
    scanf("%d%d%d", &n, &m, &k);
    for (int i = 1; i <= m; i++)
        scanf("%lld", &c[i]);
    for (int i = 1; i <= m; i++)
        scanf("%lld", &a[i]);
    for (int i = 1; i <= m; i++)
        scanf("%lld", &b[i]);
    memset(f, -0x3f, sizeof f);
    f[k] = 0;
    build(1, 1, n);
    for (int i = 1; i <= m; i++)
    {
        int j = c[i];
        f[j] = max(f[j] + a[i], max(query(1, 1, c[i] - 1), query(1, c[i] + 1, n)) + b[i]);
        modify(1, j, j, f[j]);
    }
    printf("%lld", query(1, 1, n));
    return 0;
}
#include <bits/stdc++.h>

using namespace std;
const int N = 2e4 + 10;
typedef long long LL;
typedef unsigned long long ULL;
int n, m, k, x;
LL c[N], a[N], b[N], res[N];
int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &a[i]);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &b[i]);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &c[i]);
    sort(a + 1, a + 1 + n);
    sort(b + 1, b + 1 + n);
    sort(c + 1, c + 1 + n);
    for (int i = 1; i <= n; i++)
    {
        res[i] = 1;
    }
    for (int i = 1; i <= n; i++)
    {
        int l = (b[i] + 1) / 2, r = b[i] - 1;
        //[l,r]
        res[i] = upper_bound(a + 1, a + 1 + n, r) - lower_bound(a + 1, a + 1 + n, l);
        //cout << res[i] << " ";
    }
    //cout << endl;
    for (int i = 1; i <= n; i++)
        res[i] += res[i - 1];
    ULL ans = 0;
    for (int i = 1; i <= n; i++)
    {
        int l = (c[i] + 1) / 2, r = c[i] - 1;
        //[l,r]
        int rr = upper_bound(b + 1, b + 1 + n, r) - b - 1;
        int ll = lower_bound(b + 1, b + 1 + n, l) - b;
        // cout << c[i] << " " << max(0ll, res[rr] - res[ll - 1]) << endl;
        ans += max(0ll, res[rr] - res[ll - 1]);
    }
    printf("%llu", ans);
    return 0;
}
#美团笔试##美团#
全部评论
感觉比较难的就是线段树优化dp和二分吧
6 回复 分享
发布于 2022-09-03 12:01 上海
可以讲下第四题思路吗
2 回复 分享
发布于 2022-09-03 12:18 广东
第一次4.75,第二次5,今天依旧得笔试,双985学历也无用...,应该是看部门的,老哥投了什么部门
3 回复 分享
发布于 2022-09-03 12:41 浙江
第五题提供一个排序之后on的解法: 首先考虑b,b中每一个数都对应c的一个区间,枚举b的过程中,区间单调递增。对应c的区间是可以滑动窗口求出来的,On 再考虑a对应的b,和以上一样,枚举a的过程,对应b的区间也是单调递增的,也可以On求。滑动窗口维护贡献就可以了
1 回复 分享
发布于 2022-09-03 12:33 河北
太狠了,我只会无脑DFS
2 回复 分享
发布于 2022-09-03 12:07 辽宁
最后一题二分只过了90
1 回复 分享
发布于 2022-09-03 12:59 广东
好久没刷题,随便做了一下,没a几道,直接约面了😂😂,抱着凉凉准备了
点赞 回复 分享
发布于 2022-09-03 21:22 广东
dp+线段树么  这一看就是ACM选手吧
7 回复 分享
发布于 2022-09-03 12:24 上海
第四题其实不用那么复杂的数据结构...普通优化就可以
点赞 回复 分享
发布于 2022-09-03 12:31 河北
真猛
点赞 回复 分享
发布于 2022-09-03 12:36 湖南
太强了
点赞 回复 分享
发布于 2022-09-03 12:54 湖南
第四题搞麻了过了92% 第五题没时间做,亏大了
点赞 回复 分享
发布于 2022-09-03 12:58 湖南
{"pureText":"","imgs":[{"alt":"discuss_166****718487.jpeg","height":1623,"localSrc":"content://media/external/images/media/138082","src":"https://uploadfiles.nowcoder.com/message_images/20220903/165664256_1662181718495/discuss_1662181718487.jpeg","width":960}]}
点赞 回复 分享
发布于 2022-09-03 13:08 北京
请问,字母树有python版本的吗?非科班看不懂c++
点赞 回复 分享
发布于 2022-09-03 16:28 天津
tql
点赞 回复 分享
发布于 2022-09-03 16:57 海南
求个题面
点赞 回复 分享
发布于 2022-09-03 20:47 山东
老哥牛的,感觉像acm大佬
点赞 回复 分享
发布于 2022-09-03 21:19 北京
投的信息安全也是介个题,五道
点赞 回复 分享
发布于 2022-09-03 22:24 辽宁
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞 回复 分享
发布于 2022-09-04 10:38 北京

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
24 69 评论
分享
牛客网
牛客企业服务