1 条题解

  • 0
    @ 2025-10-8 16:48:53
    #include<bits/stdc++.h>
    using namespace std;
    struct node{int x,y,L;}a[11000];
    bool cmp(node n1,node n2){return n1.x<n2.x;}
    int f[11000];
    int main()
    {
        int T,n;scanf("%d%d",&T,&n);
        for (int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].L),a[i].y=a[i].x+a[i].L-1;
        sort(a+1,a+n+1,cmp);
        memset(f,63,sizeof(f));f[T+1]=0;
        int j=n;
        for(int i=T;i>=1;i--)
        {
            bool bk=0;
            for(;j>=1;j--)
            {
                if(a[j].x==i)f[i]=min(f[i],f[a[j].y+1]+a[j].L),bk=1;
                if(a[j].x<i)break;
            }
            if(bk==0)f[i]=f[i+1];
        }
        printf("%d\n",T-f[1]);
        return 0;
    }
    
    • 1

    *【动态规划:状态设计DP】不重叠线段2[尼克的任务]

    信息

    ID
    253
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    57
    已通过
    36
    上传者