跳坑位置:P1005 [NOIP2007 提高组] 矩阵取数游戏
此题数据范围:
对于 60% 的数据,满足 1≤n,m≤30,答案不超过 1e16。 对于 100% 的数据,满足 1≤n,m≤80,0≤a[i][j]≤10000。
区间dp很好想,但是根据数据范围,显然要用高精度 int128。
不过,写的时候要注意**「运算时的数据类型强制转换」**
比如,如果写了表达式dp[l - 1][r] + a[i][l - 1] * p[m - r + l - 1]
(其中dp
和p
为__int128
,而a
为int
),那么计算时就会先将p[m - r + l - 1]
转换为int
再与a[i][l - 1]
相乘
所以,正确的写法是:dp[l - 1][r] + p[m - r + l - 1] * a[i][l - 1]
(把目标类型写在运算符号前)