第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

??途W(wǎng)4812題:從貪心到二分,餐館安排最優(yōu)算法解析

標(biāo)簽:
C++

https://img1.sycdn.imooc.com/857d4c68088713a118800797.jpg

牛客网4812题要解决餐馆经营问题,想象你是一家热门餐馆的经理,每天需要安排大量客人入座。如何在不拼桌的情况下,让餐馆获得最大收益?

一、问题重述与分析

我们需要处理n张桌子(容量各不相同)和m批客人(人数和消费金额不同),目标是通过合理安排使总消费金额最大化。关键约束:

  1. 不允许拼桌

  2. 每批客人必须全部安排在一张桌子

  3. 桌子容量必须≥客人数

二、算法选择

贪心策略:优先安排单位人数消费高的客人 二分查找:快速找到合适桌子

详细步骤解析

  1. 数据预处理

  • 桌子容量排序:使用multiset自动排序并允许重复

  • 客人排序:按消费金额降序排列

核心算法流程

  • 遍历排序后的客人列表

  • 对每位客人,用lower_bound找到最小合适桌子

  • 如果找到,累加金额并移除该桌子

复杂度分析

  • 排序:O(nlogn + mlogm)

  • 查找:O(mlogn)

  • 总体:O(nlogn + mlogm)

三、代码实现细节

#include <iostream>#include <algorithm>#include <vector> #include <set>using namespace std;struct Guest {
    int b; // 人数
    int c; // 消费金额
    bool operator<(const Guest& other) const {
        return c > other.c; // 按金额降序排列
    }};int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;

    // 读取桌子容量并排序
    multiset<int> tables;
    for (int i = 0; i < n; ++i) {
        int a;
        cin >> a;
        tables.insert(a);
    }

    // 读取客人信息并排序(按金额降序)
    vector<Guest> guests(m);
    for (int i = 0; i < m; ++i) {
        cin >> guests[i].b >> guests[i].c;
    }
    sort(guests.begin(), guests.end());

    long long total = 0;
    for (const auto& guest : guests) {
        // 找到最小的大于等于人数的桌子
        auto it = tables.lower_bound(guest.b);
        if (it != tables.end()) {
            total += guest.c;
            tables.erase(it); // 该桌子被占用
        }
    }

    cout << total << endl;
    return 0;}

四、常见问题解答

Q:为什么不用动态规划? A:数据规模太大(5e4),DP复杂度不可接受

Q:如何处理相同消费金额的客人? A:任意顺序处理均可,不影响最终结果

五、扩展思考

  1. 如果允许拼桌,算法如何修改?

  2. 考虑翻台率因素后的优化方向

  3. 实时预约系统的算法调整


来源:牛客题解


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消