秋招笔试题

美团

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 复制代码
相关推荐
2401_892070981 天前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
yuzhuanhei1 天前
Visual Studio 配置C++opencv
c++·学习·visual studio
小O的算法实验室1 天前
2026年ASOC,基于深度强化学习的无人机三维复杂环境分层自适应导航规划方法,深度解析+性能实测
算法·无人机·论文复现·智能算法·智能算法改进
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
LIST 的相关知识
数据结构·list
不爱吃炸鸡柳1 天前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
M--Y1 天前
Redis常用数据类型
数据结构·数据库·redis
十五年专注C++开发1 天前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
‎ദ്ദിᵔ.˛.ᵔ₎1 天前
STL 栈 队列
开发语言·c++
2401_892070981 天前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
郭涤生1 天前
STL vector 扩容机制与自定义内存分配器设计分析
c++·算法