秋招笔试题

美团

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 复制代码
相关推荐
疯狂打码的少年2 分钟前
【数据结构】栈的应用:表达式求值(后缀表达式)
java·数据结构·笔记·算法
HiDev_13 分钟前
【非标自动化】plc执行顺序问题、扫描周期问题
深度学习·算法·机器学习
高洁0141 分钟前
工信部教考中心证书-人工智能系列本系列
人工智能·python·深度学习·算法
10岁的博客1 小时前
【C++题解】最多共线点问题:小飞拿蛋糕游戏的最优策略
c++
陈王卜1 小时前
Reduce 算子优化笔记
算法
wabs6661 小时前
关于图论【最短路径之Bellman_ford 算法(判断负权回路)|卡码网95.城市间货物运输II的思考】
数据结构·算法·图论·bellman_ford算法·卡码网·判断负权回路
東隅已逝,桑榆非晚1 小时前
类和对象(中)
c++·笔记
YouonlyliveonceC1 小时前
《大话数据结构》第4章实战:中缀表达式转后缀 + 后缀表达式求值(完整可运行实现)
算法
phoenix@Capricornus1 小时前
从统计决策到贝叶斯估计
人工智能·算法·机器学习
AICDragon2 小时前
1.8%就够了:K3的896个MoE专家,为什么激活率这么低反而是好事?
人工智能·算法