秋招笔试题

美团

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 复制代码
相关推荐
爱吃生蚝的于勒18 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~21 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
王哈哈^_^1 小时前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城1 小时前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德1 小时前
多项式加法——C语言
数据结构·c++·算法
legend_jz1 小时前
STL--哈希
c++·算法·哈希算法
CSUC1 小时前
【C++】父类参数有默认值时子类构造函数列表中可以省略该参数
c++
Vanranrr1 小时前
C++ QT
java·c++·qt
kingmax542120081 小时前
初三数学,最优解问题
算法
鸿儒5171 小时前
C++ lambda 匿名函数
开发语言·c++