1 条题解

  • 0
    @ 2025-8-24 21:37:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar sigland
    **

    搬运于2025-08-24 21:37:43,当前版本为作者最后更新于2018-04-15 13:40:15,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    蒟蒻写了个O(n+k)算法,简单粗暴.jpg.思路就是开30000个vector作为起始时间(就是不用排序),对于读入的东西(st,ed)将ed扔到st的那个vector里,然后就是一个很假的dp了,dp[i]表示在i时间结束的最大演讲时间,转移也很简单,就是要注意下dp[i]的初值是dp[i-1],因为可以某段时间不排演出...代码17行,0ms,还算可以...具体看代码吧...

    #include<bits/stdc++.h>
    using namespace std;
    int n,dp[30010]={0},st,ed;
    vector<int>mp[30010];
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&st,&ed),mp[st].push_back(ed);
        for(int i=0;i<=30000;i++)
        {
            if(i>1)dp[i]=max(dp[i],dp[i-1]);
            for(int j=0;j<mp[i].size();j++)
            dp[mp[i][j]]=max(dp[mp[i][j]],dp[i]+mp[i][j]-i);//转移 
        }
        cout<<dp[30000];//最大就30000结束 
    }
    
    • 1

    信息

    ID
    1459
    时间
    1000ms
    内存
    125MiB
    难度
    4
    标签
    递交数
    0
    已通过
    0
    上传者