http://www.lydsy.com/JudgeOnline/problem.php?id=3997 最小链覆盖=最长反链长度 所以题目等价于寻找一条从右上角到左下角的最长路 #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 1002 int a[N][N]; long long dp[N][N]; void read(int &x) {…
题解: dp f[i][j]=max(f[i-1][j+1]+a[i][j],max(f[i-1][j],f[i][j+1])); 代码: #include<bits/stdc++.h> using namespace std; ; int T,n,m,a[N][N],f[N][N]; int main() { scanf("%d",&T); while (T--) { scanf("%d%d",&n,&m); ;i<=n;…