AcWing 1262. 鱼塘钓鱼
原题链接
简单
作者:
liebe_1
,
2024-03-27 00:45:22
,
所有人可见
,
阅读 8
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 110;
int a[N], d[N], l[N], spend[N];
int get(int k) {
return max(0, a[k] - spend[k] * d[k]);
}
int work(int n, int T) {
int res = 0;
memset(spend, 0, sizeof spend);
for (int i = 0; i < T; i++) {
int t = 1;
for (int j = 2; j <= n; j++)
if (get(t) < get(j))
t = j;
res += get(t);
spend[t]++;//这一步没有进行
}
return res;
}
int main() {
int n, T;
cin >> n;
for (int i = 1; i <= n; i++)cin >> a[i];
for (int i = 1; i <= n; i++)cin >> d[i];
for (int i = 2; i <= n; i++) {
cin >> l[i];
l[i] += l[i - 1];
}
cin >> T;
int ans = 0;
for (int i = 1; i <= n; i++) {
ans = max(ans, work(i, T - l[i]));
}
cout << ans;
return 0;
}