秋招笔试题

美团

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 复制代码
相关推荐
budingxiaomoli16 小时前
动态规划--斐波那契数列模型
算法·动态规划
IT猿手16 小时前
多目标优化算法:多目标蛇优化算法(Multiple Objective Snake Optimizer,MOSO)(提供MATLAB代码)
开发语言·算法·matlab·动态路径规划·光伏模型参数估计
朔北之忘 Clancy16 小时前
2026 年 3 月青少年软编等考 C/C++ 一级真题解析
c语言·开发语言·c++·青少年编程·题解·考级
MegaDataFlowers16 小时前
101.对称二叉树
算法
小成2023032026516 小时前
C++~01面向对象基础
开发语言·c++
Jasmine_llq17 小时前
《B3939 [GESP样题 四级] 绝对素数》
数据结构·算法·素数判断算法·数字拆分与反转算法·区间遍历枚举·双条件判断逻辑
郝学胜-神的一滴17 小时前
干货版《算法导论》07:递归视角下的选择排序与归并排序
java·数据结构·c++·python·程序人生·算法·排序算法
csdn_aspnet17 小时前
javascript 算法 LeetCode 编号 70 - 爬楼梯
开发语言·javascript·算法·leetcode·ecmascript
shehuiyuelaiyuehao17 小时前
多线程入门
java·python·算法
Navigator_Z17 小时前
LeetCode //C - 1073. Adding Two Negabinary Numbers
c语言·算法·leetcode