#include <iostream>
using namespace std;
int n;//n个申请
int get[100005];//接受的收益
int giveup[100005];//需要放弃的个数
int dp[100005];//到第i个申请时,此时可收益的最大值
int main()
{
cin>>n;
}
using namespace std;
int n;//n个申请
int get[100005];//接受的收益
int giveup[100005];//需要放弃的个数
int dp[100005];//到第i个申请时,此时可收益的最大值
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>get[i];
cin>>giveup[i];
}
dp[1]=get[1];
for(int i=1;i<=n;i++){
dp[i]=max(dp[i],dp[i-1]);
if(i+giveup[i]<=n)//接受第i+giveup个,且不越界
{
int rec=dp[i]+get[i];//新的dp[i+giveup[i]],用rec记录
dp[i+giveup[i]]=max(dp[i+giveup[i]],rec);
}
}
cout<<dp[n];
return 0;}
0 回复
0 转发
0 喜欢
4 阅读



