好奇看这里
#include <bits/stdc++.h>
using namespace std;
pair<int64_t,int64_t> a[505];
int64_t n,k,dp[505][105];
int main()
{
cin>>n>>k;
for(int64_t i=1;i<=n;i++)
cin>>a[i].first>>a[i].second;
sort(a+1,a+1+n);
for(int64_t i=1;i<=n;i++)
for(int64_t j=1;j<=k;j++){
dp[i][j]=j+1;
for(int64_t t=1;t<i;t++){
if(a[t].second>a[i].second)
continue;
int64_t cnt=a[i].first-a[t].first+a[i].second-a[t].second-1;
if(j>=cnt)
dp[i][j]=max(dp[i][j],dp[i][j-cnt]+cnt+1);
}
}
cout<<dp[n][k];
return 0;
}
为什么?
@Shadow_T @caoyuchen110911 @wangyinan1122 @dengfp