20160413模拟

T1,T2太水就不提了

T3 科技树(tec)

  • 题目大意
    • 给定一个 n 行的倒三角,第 i 行有 ni+1 个位置,每个位置有一个价值,获得 (i,j) 的价值需要先获得 (i1,j)(i1,j+1) 的价值,选定 m 个位置,询问最大价值和
    • n50,m500
  • 题解
    • 当选定一个位置 (i,j) 后, (i1,j),(i2,j)....(1,j) (i1,j+1),(i2,j+2)...(1,?) 也就是以 (i,j) 为顶点的直角三角形一定都会被选
    • 那么最终选的点的下轮廓一定是两边是最高层直线,中间是折线
    • 我们 dp 出轮廓线及其上面的所有点之和的最大值
    • dp[i,j,k]:(i,j) 为轮廓线上的点,选了k个点的最大价值和
    • sum[i,j]=val[i,j]+val[i1,j]+...val[1,j]
    • dp[i,j,k]=max{dp[i1,j,k1]+val[i,j],dp[i+1,j1,ki]+sum[i,j]}
    • ans=dp[0,n,m]
  • CODE

你可能感兴趣的:(动态规划—一般动规与递推)