zoukankan      html  css  js  c++  java
  • 模拟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]));
    愿你在迷茫时,记起自己的珍贵。
  • 相关阅读:
    转载php在IIS中运行
    程序员必去的网站
    分享一下jQuery UI的地址
    dbcp相关配置
    shell学习第二弹-进阶
    shell学习第一弹-初识
    java servlet 3.0文件上传
    Junit使用第二弹
    各个数据库中,查询前n条记录的方法
    junit使用第一弹
  • 原文地址:https://www.cnblogs.com/casun547/p/11343587.html
Copyright © 2011-2022 走看看