45分求调
查看原帖
45分求调
767779
BD_AZZR_CN楼主2024/8/2 14:44

参考的这个参考

#include <bits/stdc++.h>
using namespace std;
pair<int,int>a[501];
int f[501][101];//点K,自由点数量j
int main(){
    memset(f,0,sizeof(f));
    int n,k,ans=-1;
    cin >> n >> k;
    int x,y;
    for(int i=1;i<=n;i++){
        cin >> a[i].first >> a[i].second;
    }
    sort(a+1,a+n+1);
    //左下找
    for(int i = 1; i <= n; i++){//现在
        f[i][0]=1;
        for(int j = i-1; j>=1; j--){//往前推
            if(a[j].first > a[i].first || a[j].second > a[i].second){
                continue;
            }
            //计算点距
            int d = ((a[i].first-a[j].first)+(a[i].second-a[j].second)-1);//不算自己
            // cout << d << endl;
            for(int l=d; l <= k; l++){
                f[i][l]=max(f[j][l-x]+x+1,f[i][l]);//往左下,接上
                // ans = max(f[i][l],ans);
            }
        }
        for(int l = 0; l <= k; l++)ans = max(f[i][l],ans);
    }
    for(int i = 1; i <= n; i++){
        for(int j = 0; j <= k; j++){
            ans = max(ans,f[i][j]+(k-j));
        }
    }
    cout << ans;
}

以前全RE,现在一半多WA

2024/8/2 14:44
加载中...