#include using namespace std; const int N = 510; int n; int t[N], r[N]; int ans; /* 此题采用贪心算法,从最后一个时段开始,选择在该时段内完成有奖励的小游戏中找奖励最大的完成, 时间复杂度为O(N^2) */ int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> t[i]; for (int i = 1; i <= n; i++) cin >> r[i]; // 从最后一个时段开始枚举 for (int i = n; i >= 1; i--) { int k = 0; // 找到i时段之内最大分值位置 int m = 0; // 最大分值 for (int j = 1; j <= n; j++) { if (t[j] >= i && r[j] > m) { m = r[j]; k = j; } } if (k != 0) { // 如果找到了 ans += r[k]; // 加分 r[k] = 0; // 清零,防止重复 } } cout << ans << endl; return 0; }