1 条题解

  • 0
    @ 2025-8-24 21:21:07

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Nishikino_Curtis
    **

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

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

    以下是正文


    简单来说,因为任务可以并发,所以一个任务如果有前驱的话,最优方案便是在它的最晚一个前驱结束后就立即开始,而且任务k的前驱节点一定小于k,所以读入时顺便从它的前驱里挑一个最大的转移即可。同时可以更新最终答案。

    我是仗着代码短才来发的


    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,l,t,ans[10005],maxans;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;++i){
            scanf("%d",&i);
            scanf("%d",&l);
            int tmp=0;
            while(scanf("%d",&t)&&t)
                tmp=max(ans[t],tmp);
            ans[i]=tmp+l;
            maxans=max(ans[i],maxans);
        } 
        printf("%d\n",maxans);
        return 0;
     } 
    
    • 1

    信息

    ID
    115
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者