T1,T2太水就不提了
T3 科技树(tec)
- 题目大意
- 给定一个
n
行的倒三角,第
i 行有 n−i+1 个位置,每个位置有一个价值,获得 (i,j) 的价值需要先获得 (i−1,j)和(i−1,j+1) 的价值,选定 m 个位置,询问最大价值和 n≤50,m≤500
- 给定一个
n
行的倒三角,第
- 题解
- 当选定一个位置 (i,j) 后, (i−1,j),(i−2,j)....(1,j) 和 (i−1,j+1),(i−2,j+2)...(1,?) 也就是以 (i,j) 为顶点的直角三角形一定都会被选
- 那么最终选的点的下轮廓一定是两边是最高层直线,中间是折线
- 我们 dp 出轮廓线及其上面的所有点之和的最大值
- dp[i,j,k]:(i,j) 为轮廓线上的点,选了k个点的最大价值和
- sum[i,j]=val[i,j]+val[i−1,j]+...val[1,j]
- dp[i,j,k]=max{dp[i−1,j,k−1]+val[i,j],dp[i+1,j−1,k−i]+sum[i,j]}
- ans=dp[0,n,m]
- CODE