No testdata at current.
提成跟就餐人数直接相关,人数越多你的提成越高,因此优先考虑人数多的家庭。从大到小排序之后模拟目前容量最高的座位能分配给哪个家庭,累加答案即可
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int>queueToEat,vector<int>dining) {
sort(queueToEat.rbegin(),queueToEat.rend());
sort(dining.rbegin(),dining.rend());
int ans=0;
int n=queueToEat.size();
int m=dining.size();
int j=0;
for(int i=0;i<m&&j<n;i++){
while(queueToEat[j]>dining[i]&&j<n){
j++;
}
if(j>=n)break;
ans++;
j++;
}
return ans;
}
vector<int> split(string s) {
s += " ";
vector<int> res;
int v = 0, f = 0;
for (char c : s) {
if (isdigit(c)) {
f = 1;
v = v * 10 + c - '0';
} else {
if (f) res.push_back(v);
v = f = 0;
}
}
return res;
}
int main() {
string s1, s2;
getline(cin, s1, ']');
getline(cin, s2);
vector<int>a = split(s1);
vector<int>b = split(s2);
cout << solve(a, b) << '\n';
}
假设你在塔子哥乐园一家餐厅当服务生,目前餐厅还有n个包厢,包厢dining[n]表示第 n−1个包厢所能容纳的人数。
现在有m个家庭在排队就餐,queueToEat[m]表示第m−1个家庭的人数。
现在你可以重新给这些家庭排序,并且你可以从任意方向(0或者−1包厢开始)开始安这些家庭就餐。
在安排这些家庭就餐时,如果遇到家庭人数大于包厢容纳人数的时候,则剩下的这批家庭需要重新开始排队等待下一次安排。
本题属于以下题库,请选择所需题库进行购买
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册