CF416B题解
题目传送门。
本题建议评橙。
前置芝士:(基础)。
样例研究
4 2
2 5
3 1
5 3
10 1
在第一组 2 5 中, 画家需要 时间来完成,此后 画家才能画 时间完成,总时间是 。
在第二组
2 5
3 1
中,画家 用 时间画完第一幅画后,开始画第二幅画,画完的时间是 。
画家 则是在 时间之后才开始画第二幅画,用时 ,最终用时 。所以 拖累了 。
第三组和第二组同理。
第四组中,画家 画完第四幅已经是 了,而画家 画完第三幅仅仅只是 。这时画家 拖累了画家 。
由此,我们得出思路——
思路历程
到这里,我们发现这一题是个裸 。
既然是 ,那么就需要一个状态和状态转移方程。
状态方面,设 为画家 在画完第 幅画后用的时间。
那么状态转移方程显而易见:
最后写出代码,此题终。
#include<bits/stdc++.h>
using namespace std;
int a[50001][6],n,m,dp[50001][6];
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
dp[i][j]=max(dp[i-1][j],dp[i][j-1])+a[i][j];
}
cout<<dp[i][n]<<' ';
}
return 0;
}
时间复杂度 ,,,不会超时。
感谢各位在评论区 的大佬们~

浙公网安备 33010602011771号