前面的题目,以后再来探索吧
背包
10+20+0(3?/5)->100+20+0(2/5)
第一题没开Longlong,数组开小,忘记排序,100->10
心态:?
区间DP
20+0+5(1/5->2/5)
听不懂,炸裂
附上背包T1
#include
#define int long long
using namespace std;
struct eg{int a,p,t;}fish[500005];
bool cmp(eg x,eg y){return x.a>t;
for(int o_pao=1;o_pao>n>>k;ans=LONG_LONG_MAX;sss=0;
for(int i=1;i>fish[i].a>>fish[i].p>>fish[i].t;
sss=max(sss,fish[i].p);
}
sort(fish+1,fish+1+n,cmp);
memset(f,0x3f,sizeof(f));f[0]=0;
for(int j=1;j<=n;j++){
for(int i=fish[j].p+fish[j].a;i<=k+sss;i++){
f[i]=min(f[i],f[i-fish[j].p]+fish[j].t);
}
}
//for(int i=1;i<=k;i++)cout<<f[i]<<' ';
//cout<<'\n';
for(int i=k;i<=k+sss;i++){ans=min(ans,f[i]);}
cout<<ans<<endl;
}
return 0;
}
太抽象了