数字三角形模型
AcWing 1015. 摘花生
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int arr[N][N];
int dp[N][N];
int r, c;
int main(){
int T;
scanf("%d", &T);
while( T-- ){
scanf("%d%d", &r, &c);
for(int i = 1; i <= r; i++){
for(int j = 1; j <= c; j++){
scanf("%d", &arr[i][j]);
}
}
for(int i = 1; i <= r; i++){
for(int j = 1; j <= c; j++){
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + arr[i][j];
}
}
printf("%d\n", dp[r][c]);
}
return 0;
}
AcWing 1018. 最低通行费
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
const int INF = 1e9;
int arr[N][N];
int dp[N][N];
int main(){
int T;
scanf("%d", &T);
for(int i = 1; i <= T; i++)
for(int j = 1; j <= T; j++){
dp[0][j] = dp[i][0] = INF;
scanf("%d", &arr[i][j]);
}
for(int i = 1; i <= T; i++)
for(int j = 1; j <= T; j++){
dp[1][1] = arr[1][1];
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + arr[i][j];
}
printf("%d", dp[T][T]);
return 0;
}
AcWing 1027. 方格取数
AcWing 275. 传纸条
最长上升子序列模型
AcWing 1017. 怪盗基德的滑翔翼
AcWing 1014. 登山
AcWing 482. 合唱队形
AcWing 1012. 友好城市
AcWing 1016. 最大上升子序列和
AcWing 1010. 拦截导弹
AcWing 187. 导弹防御系统
AcWing 272. 最长公共上升子序列