概述
题目如下:
题目链接
思路 or 题解:
D
P
[
i
]
[
j
]
DP[i][j]
DP[i][j]
i
i
i 位置,
j
j
j 时刻
转移:
d
p
[
i
]
[
j
]
=
m
a
x
(
{
d
p
[
i
−
1
]
[
j
−
1
]
,
d
p
[
i
+
1
]
[
j
−
1
]
,
d
p
[
i
]
[
j
−
1
]
}
)
+
此
时
此
位
置
下
可
以
创
造
的
价
值
dp[i][j] = max({dp[i - 1][j - 1], dp[i + 1][j - 1], dp[i][j - 1]}) + 此时此位置下可以创造的价值
dp[i][j]=max({dp[i−1][j−1],dp[i+1][j−1],dp[i][j−1]})+此时此位置下可以创造的价值
注意:要注意
0
0
0位置 与
4
4
4位置的转移
我选择位置+1处理,这样就不需要特判了
AC代码如下:
const int N = 100009;
int n;
int s[10][N];
int dp[10][N];
void solve()
{
cin >> n;
int T = 0;
for (int i = 1; i <= n; i++)
{
int t, idx, val;
cin >> t >> idx >> val;
if (t >= idx)
s[idx + 1][t] = val;
T = max(T, t);
}
for (int j = 1; j <= T; j++)
for (int i = 1; i <= 5; i++)
dp[i][j] = max({dp[i - 1][j - 1], dp[i + 1][j - 1], dp[i][j - 1]}) + s[i][j];
int ans = max({dp[1][T], dp[2][T], dp[3][T], dp[4][T], dp[5][T]});
cout << ans << 'n';
}
signed main()
{
buff;
solve();
}
最后
以上就是矮小巨人为你收集整理的D - Snuke Panic (1D)(DP)[ AtCoder Beginner Contest 266]题目如下:思路 or 题解:AC代码如下:的全部内容,希望文章能够帮你解决D - Snuke Panic (1D)(DP)[ AtCoder Beginner Contest 266]题目如下:思路 or 题解:AC代码如下:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复