其实可以用dp f[j]表示到j时间最大的收益
#include<bits/stdc++.h>using namespace std;int n,f[100000];struct node{ int d,g;}a[1000000];bool cmp(node a,node b){ return a.d<b.d;}int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].g>>a[i].d; } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) { for(int j=a[i].d;j;j--)//因为要在a[i].d之前 { f[j]=max(f[j],f[j-1]+a[i].g); } } cout<<*max_element(f+1,f+1+n); return 0;}
转载于:https://www.cnblogs.com/647Z/p/7308759.html
相关资源:JAVA上百实例源码以及开源项目