题解 | #牛牛吃草# 稍微简洁一点的代码
牛牛吃草
https://www.nowcoder.com/practice/f05254f070944ff792c0dfefabd94fec
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> w(n), a(n);
for(int i = 0; i < n; i++)
cin >> w[i];
for(int i = 0; i < n; i++)
cin >> a[i];
vector<int> dp(n);
int ans = 0;
for(int i = 0; i < n; i++){
for(int j = i; j < n; j+=a[i]){
if(j == i)
dp[j] += w[i];
else
dp[j] = max(dp[j], dp[i]);
}
ans = max(ans, dp[i]);
}
cout << ans;
}