代码的 sort 的 cmp 似乎出现问题
  • 板块学术版
  • 楼主Crab_time
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/27 23:09
  • 上次更新2023/10/27 05:30:26
查看原帖
代码的 sort 的 cmp 似乎出现问题
358283
Crab_time楼主2022/10/27 23:09

原题

#include<iostream>
#include<algorithm>
using namespace std;

#define fl(i,a,b) for(int i = a;i<(b);i++)
#define fg(i,a,b) for(int i = a;i>(b);i--)
#define fle(i,a,b) for(int i = a;i<=(b);i++)
#define fge(i,a,b) for(int i = a;i>=(b);i--)
#define inf 0x3f3f3f3f
#define long_inf 0x3f3f3f3f3f3f3f3f
#define ll long long
#define fi first
#define se second
#define mp make_pair
#define maxn 3005

struct line{
    int l,r;
}lines[maxn];

int dp[maxn],black[maxn];
int n;
ll ans;

bool cmp(line a,line b){
    return a.l < b.l;
}

int main()
{
    cin >> n;
    fle(i,1,n){
        cin >> lines[i].l >> lines[i].r;
    }
    //  fle(i,1,n){cout << lines[i].l << " " << lines[i].r <<endl;}
    sort(lines+1,lines+1+n,cmp);
    // fle(i,1,n){cout << lines[i].l << " " << lines[i].r <<endl;}
    dp[1] = lines[1].r - lines[1].l;
    black[1] = inf;
    fle(i,2,n){
        fle(j,1,i){
            if(lines[j].l > lines[i].r&&lines[j].l < black[i]){
                dp[j] = min(dp[j],dp[i] + (lines[j].r - lines[j].l));
            }
            else{
                black[i] = min(black[i],lines[j].r);
            }
        }
    }
    // fle(i,1,n){cout << black[i] << " ";}
    cout << dp[n];
    return 0;
}
2022/10/27 23:09
加载中...