3 条题解
-
0
#include <iostream>
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;
}
信息
- ID
- 127
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 664
- 已通过
- 137
- 上传者