秋招笔试题

美团

1. 小美浇花

题目 🌸: 给花浇水和施肥,每天都可以浇水,获得 x 分,每隔两天可以施肥获得 y 分,施肥和浇水可以在同一天进行,求达到 z 分至少需要多少天?

示例🌸:

复制代码
输入:
1  2  12	// 浇水  施肥  目标
输出:
7			// 需要 7 天

代码🌺:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;

void solve() {
    int64 x, y, z;
    cin >> x >> y >> z;
    int64 sum = 0;
    int64 cnt = 0;
    while (sum < z) {
        if (cnt % 3 == 0) sum += (x + y);     	// 0  3  6
        else sum += x;							// 1  2  4  5
        ++cnt;
    }
    cout << cnt;
}

int main() {
    solve();
    return 0;
}

2. 账单计算

题目 🌸: 群收款问题,有 n 笔账单,m 个人,每笔账单 k 个人参与,共 c 元,没人均摊,输出每个人最后总共要给小红的钱。(每个人给的钱向上取整)

示例🌸:

复制代码
输入:	
2 3		// 2 份账单,3 个额外的人
3 10	// 3 人吃了 10 块
1 3		// 1 3 吃的
4 12	// 4 人吃了 12块
1 2 3	// 1 2 3 吃的
输出:	
7 3 7	// 分别给小美 7 3 7 元

代码🌺:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;

void solve() {
    int64 n, m;
    cin >> n >> m;
    int k, c;
    map<int, int> res;
    for (int i = 0; i < n; ++i) {
        cin >> k >> c;
        int mean = (c + k - 1) / k;
        for (int t, j = 0; j < k; ++j) {
            cin >> t;
            res[t] += mean;
        }
    }
    for (auto r : res) {
        cout << r.second << " ";
    }
}

int main() {
    solve();
    return 0;
}

3. 修改后的最大和

题目 🌸: 长度为 n 的数组 a,每次可以任选两个数 a[i] a[j],再自己构造 xy 满足 x*y = a[i]*a[j],然后把 x y 替换 a[i]a[j],问 k 次操作后数组所有元素和最大值。

示例🌸:

复制代码
输入:
5  2				// 5 个数 操作 2 次
1  4  3  5  2		// 具体的数
输出:
65

代码🌺:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;

static bool cmp(int64 a, int64 b) {return a > b;} 

void solve() {
    int64 n, k;
    cin >> n >> k;
    vector<int> nums(n, 0);
    for (int tmp, i = 0; i < n; ++i) {
        cin >> tmp;
        nums[i] = tmp;
    }
    sort(nums.begin(), nums.end(), cmp);
    int64 tmp = 0;
    for (int64 i = 1; i <= k; ++i) {
        tmp = nums[i] * nums[0];
        nums[0] = tmp;
        nums[i] = 1;
    }
    int sum = 0;
    for (auto num : nums) {
        sum += num;
    }
    cout << sum;
}

int main() {
    solve();
    return 0;
}

4. 重新排序

题目 🌸:两个长度相同的数组 ab,问能否重排 a 数组使得对于所有的下标 i,满足:1 <= a[i] + b[i] <= m

思路 🌷:将 a 从小到大,b 从大到小排序,再比较。

代码🌺:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
typedef long long int64;

static bool cmp(int64 a, int64 b) {return a > b;} 

void solve() {
    int64 n, m;
    cin >> n >> m;
    vector<int> a(n), b(n);
    for (auto& num : a) cin >> num;
    for (auto& num : b) cin >> num;
    sort(a.begin(), a.end());
    sort(b.begin(), b.end(), cmp);
    for (int i = 0; i < n; ++i) {
        int sum = a[i] + b[i];
        if (sum < 1 || sum > m) {
            cout << "NO";
            return;
        }
    }
    cout << "Yes";
}

int main() {
    solve();
    return 0;
}

5. 平均前缀和

题目 🌸:长度为 n的数组 a,问平均值恰好等于 k 的最长子数组长度。

思路🌷:

代码🌺:

cpp 复制代码
相关推荐
感哥14 小时前
C++ 面向对象
c++
CoovallyAIHub15 小时前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
沐怡旸15 小时前
【底层机制】std::shared_ptr解决的痛点?是什么?如何实现?如何正确用?
c++·面试
NAGNIP16 小时前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo16 小时前
半开区间和开区间的两个二分模版
算法
moonlifesudo16 小时前
300:最长递增子序列
算法
CoovallyAIHub21 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
感哥1 天前
C++ STL 常用算法
c++
CoovallyAIHub1 天前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
saltymilk1 天前
C++ 模板参数推导问题小记(模板类的模板构造函数)
c++·模板元编程