码迷,mamicode.com
首页 > 其他好文 > 详细

模拟18 题解

时间:2019-08-13 09:14:07      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:数字   时间   注意   span   模拟   搜索   转移   状态   pre   

T1

模拟就好了,先扫出来数字的位置,注意数字可能是多位数,然后找到上下边界,再枚举每个矩形的左右两边,找到水管,找下去,并记录那两个水箱连了边,dfs

T2

 搜索的思路,从最靠近出发点的两个精灵点开始,每种状态下只可能向左右两边最靠近的两个位置转移,注意只有符合时间要求并能做出贡献的点才转移,

dp:定义f[i][j][k]为已经考虑了i到j,此时在i点,用了k时间的最有得分,g[i][j][k]为在j点,

转移:

1 f[i-1][j][k+p[i].a-p[i-1].a]=max(f[i-1][j][k+p[i].a-p[i-1].a],f[i][j][k]+((k+p[i].a-p[i-1].a<=p[i-1].t)?p[i-1].b:0));
2 f[i-1][j][k+p[j].a-p[i-1].a]=max(f[i-1][j][k+p[j].a-p[i-1].a],g[i][j][k]+((k+p[j].a-p[i-1].a<=p[i-1].t)?p[i-1].b:0));
3 g[i][j+1][k+p[j+1].a-p[j].a]=max(g[i][j+1][k+p[j+1].a-p[j].a],g[i][j][k]+((k+p[j+1].a-p[j].a<=p[j+1].t)?p[j+1].b:0));
4 g[i][j+1][k+p[j+1].a-p[i].a]=max(g[i][j+1][k+p[j+1].a-p[i].a],f[i][j][k]+((k+p[j+1].a-p[i].a<=p[j+1].t)?p[j+1].b:0));
5 ans=max(ans,max(f[i][j][k],g[i][j][k]));

 

模拟18 题解

标签:数字   时间   注意   span   模拟   搜索   转移   状态   pre   

原文地址:https://www.cnblogs.com/casun547/p/11343587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!