网站建设试卷,无极在线招聘招工最新招聘,金华自助建站,wordpress文章排序方式正题
评测记录:https://www.luogu.org/recordnew/lists?uid52918pidP1156 题目大意
有若干个垃圾#xff0c;在tit_iti时掉落#xff0c;可以选择吃掉多活fif_ifi天#xff0c;也可以堆hih_ihi高度#xff0c;高度到达DDD就可以脱逃#xff0c;求最短逃脱时…正题
评测记录:https://www.luogu.org/recordnew/lists?uid52918pidP1156 题目大意
有若干个垃圾在tit_iti时掉落可以选择吃掉多活fif_ifi天也可以堆hih_ihi高度高度到达DDD就可以脱逃求最短逃脱时间若无法逃脱求最多多少天。 解题思路
用fi,jf_{i,j}fi,j表示用到第iii个垃圾高度jjj时最长能存活到多久。 然后每个垃圾 fi,jmax{fi−1,j−hi,fi−1,jfi}(fi−1,jgt;ti)f_{i,j}max\{f_{i-1,j-h_i},f_{i-1,j}f_i\}(f_{i-1,j}gt;t_i)fi,jmax{fi−1,j−hi,fi−1,jfi}(fi−1,jti) code
#includecstdio
#includealgorithm
using namespace std;
struct node{int t,c,h;
}a[101];
int d,g,f[101],maxs;
bool cmp(node x,node y)
{return x.ty.t;}
int main()
{scanf(%d%d,d,g);for(int i1;ig;i)scanf(%d%d%d,a[i].t,a[i].c,a[i].h);sort(a1,a1g,cmp);//按时间排序f[0]10;//初始存活时间for(int i1;ig;i){int ta[i].t,ca[i].c,ha[i].h;for(int jd;j0;j--)if(f[j]t)//可以活到接过这个垃圾{if(jhd)//成功脱逃{printf(%d,t);return 0;}f[jh]max(f[jh],f[j]);//动态转移f[j]c;//动态转移}}printf(%d,f[0]);//其实就是所有垃圾的存活时间和
}