标签:for csharp def 动态规划 起点 pre 多点 题目 long
#include <iostream> #include <cstdio> using namespace std; #define ll long long const int maxn = 2005; int t[maxn],dp[maxn][maxn]; int main() { int T; cin>>T; for(int cn=1;cn<=T;cn++) { int ans=0; int n,m,k; scanf("%d %d %d",&n,&m,&k); for(int i=0;i<=n;i++) { for(int j=0;j<=k;j++)dp[i][j]=0; t[i]=0; } for(int i=1;i<=m;i++) { int x,y; scanf("%d %d",&x,&y); for(int j=x;j<=y;j++) { t[j]=max(t[j],y); } } for(int i=1;i<=n;i++) { for(int j=1;j<=k;j++) { if(t[i]) dp[t[i]][j]=max(dp[t[i]][j],dp[i-1][j-1]+t[i]-i+1); dp[i][j]=max(dp[i][j],dp[i-1][j]); } } for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) ans=max(ans,dp[i][j]); cout<<"Case #"<<cn<<": "; cout<<ans<<endl; } return 0; }
标签:for csharp def 动态规划 起点 pre 多点 题目 long
原文地址:https://www.cnblogs.com/carcar/p/9657051.html