模拟18 题解

Posted casun547

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟18 题解相关的知识,希望对你有一定的参考价值。

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 题解的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯- 2017模拟赛-本科组(题解)

2019.10.18模拟赛T3

题解 P5116 [USACO18DEC]Mixing Milk

力扣第331场周赛题解

hiho_offer收割18_题解报告_差第四题

水4月21日模拟题解