一道贪心题。
我们可以记录每一位客人离开的时间,当下一位客人来临时,他们之间空闲的时间就是我们休息的时间。
for (int i = 1; i <= n; i++) {
int t, l;
cin >> t >> l;
ans += (t - endt) / a;
endt = t + l;
}
最后再加上所有客人都走后的空闲时间即可。
ans += (L - endt) / a;
最后给出代码
#include <bits/stdc++.h>
#define ll long long
#define INF 1e9
using namespace std;
int n, L, a, endt, ans; // endt 表示上一位客人离开的时间
signed main() {
ios :: sync_with_stdio(0);
cin >> n >> L >> a;
for (int i = 1; i <= n; i++) {
int t, l;
cin >> t >> l;
ans += (t - endt) / a; // 计算空闲时间能休息多少次
endt = t + l; // 更新 endt
}
ans += (L - endt) / a; // 最后计算所有客人都走后的空闲时间能休息多少次
cout << ans;
return 0;
}
标签:endt,int,题解,Cashier,时间,客人,ans,空闲
From: https://www.cnblogs.com/xvl-/p/17369072.html