P1113 杂务

题目描述

John的农场在给奶牛挤奶前有很多杂务要完成,每一项杂务都需要一定的时间来完成它。比如:他们要将奶牛集合起来,将他们赶进牛棚,为奶牛清洗乳房以及一些其它工作。尽早将所有杂务完成是必要的,因为这样才有更多时间挤出更多的牛奶。当然,有些杂务必须在另一些杂务完成的情况下才能进行。比如:只有将奶牛赶进牛棚才能开始为它清洗乳房,还有在未给奶牛清洗乳房之前不能挤奶。我们把这些工作称为完成本项工作的准备工作。至少有一项杂务不要求有准备工作,这个可以最早着手完成的工作,标记为杂务 1 。John有需要完成的 n 个杂务的清单,并且这份清单是有一定顺序的,杂务 k(k>1) 的准备工作只可能在杂务 1 至 k−1 中。

写一个程序从 1 到 n 读入每个杂务的工作说明。计算出所有杂务都被完成的最短时间。当然互相没有关系的杂务可以同时工作,并且,你可以假定John的农场有足够多的工人来同时完成任意多项任务。

输入输出格式

输入格式:

第1行:一个整数 n ,必须完成的杂务的数目( 3≤n≤10,000 );

第 2 至 (n+1) 行: 共有 n 行,每行有一些用 1 个空格隔开的整数,分别表示:

* 工作序号( 1 至 n ,在输入文件中是有序的);

* 完成工作所需要的时间 len(1≤len≤100) ;

* 一些必须完成的准备工作,总数不超过 100 个,由一个数字 0 结束。有些杂务没有需要准备的工作只描述一个单独的 0 ,整个输入文件中不会出现多余的空格。

输出格式:

一个整数,表示完成所有杂务所需的最短时间。

输入输出样例

输入样例#1:

7
1 5 0
2 2 1 0
3 3 2 0
4 6 1 0
5 1 2 4 0
6 8 2 4 0
7 4 3 5 6 0
输出样例#1:

23

翻了翻题解发现都是什么拓扑?最长路?dfs?哦!!我天,dalao dalao。
为什么要做的那么麻烦。
在这说一下我的解法,既然第k件事的准备一定在第1到k-1件事中,那么不难想到二者之间的联系。
那么开始循环处理每一件事的结束时间,比较取max不就好了,具体理解看代码。
/*....................
作者:Manjusaka
时间:2018/7/5
题目:luogu P1113 杂务
......................*/ #include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n,ans;
struct ahah
{
int need,over; // need 表示需要时间 ,over表示结束时间。
int pre[],tot; // pre[],tot 表示开始这件事前有tot件事要准备,pre储存。
} edge[];
int main()
{
int x,y,z;
scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%d%d",&x,&edge[i].need);
while(scanf("%d",&y)==&&y!=)edge[x].pre[++edge[x].tot]=y;
}
edge[].over=edge[].need;
for(int i=; i<=n; i++)
{
for(int j=; j<=edge[i].tot; j++)
{
edge[i].over=max(edge[i].over,edge[edge[i].pre[j]].over+edge[i].need);
//可能比较混乱,这件事的结束时间一定是这些事完成后再做,
//所以取每件事完成的时间加上现在这件事的时间 ,作为目前所处理到的时间的完成时间。
}
ans=max(ans,edge[i].over);
}
printf("%d",ans);
}

 

luogu 1113 杂务--啥?最长路?抱歉,我不会的更多相关文章

  1. luogu P1807 最长路_NOI导刊2010提高(07)

    题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入格式 ...

  2. BZOJ 3887/Luogu P3119: [Usaco2015 Jan]Grass Cownoisseur (强连通分量+最长路)

    分层建图,反向边建在两层之间,两层内部分别建正向边,tarjan缩点后,拓扑排序求一次1所在强连通分量和1+n所在强联通分量的最长路(长度定义为路径上的强联通分量内部点数和).然后由于1所在强连通分量 ...

  3. P3119 [USACO15JAN]草鉴定Grass Cownoisseur 分层图或者跑两次最长路

    https://www.luogu.org/problemnew/show/P3119 题意 有一个有向图,允许最多走一次逆向的路,问从1再走回1,最多能经过几个点. 思路 (一)首先先缩点.自己在缩 ...

  4. 洛谷 P3627 [APIO2009]抢掠计划 Tarjan缩点+Spfa求最长路

    题目地址:https://www.luogu.com.cn/problem/P3627 第一次寒假训练的结测题,思路本身不难,但对于我这个码力蒟蒻来说实现难度不小-考试时肛了将近两个半小时才刚肛出来. ...

  5. spfa求最长路

    http://poj.org/problem?id=1932 spfa求最长路,判断dist[n] > 0,需要注意的是有正环存在,如果有环存在,那么就要判断这个环上的某一点是否能够到达n点,如 ...

  6. zoj 3795 Grouping tarjan缩点 + DGA上的最长路

    Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Practic ...

  7. 寒冰王座(DGA最长路/完全背包)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  8. 【HDU3721】枚举+最长路

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3721 题意:给你一颗n个节点n-1条边的树,每条边都有一个权值,现在让你任意移动一条边然后把这条边连接 ...

  9. [USACO2003][poj2138]Travel Games(dp/最长路)

    http://poj.org/problem?id=2138 题意:给你一些单词和初始单词,在初始单词的任意位置你可以加任意一个字母,使得这个新单词在给的单词中有所出现,然后在这样不断迭代下去,让你求 ...

随机推荐

  1. css里关于浏览器的前缀

    今天遇到一个比较坑爹的 -moz-box-sizing: border-box; box-sizing' border-box;   一下子有点懵逼,第一个什么鬼??一查,原来是火狐浏览器的前缀.应该 ...

  2. bzoj 1433: [ZJOI2009]假期的宿舍【匈牙利算法】

    i能睡j床的连边(i,j),跑最大匹配或者最大流,然后看看人数能不能对上总数即可 #include<iostream> #include<cstdio> #include< ...

  3. PJzhang:漏洞渗透测试框架“天使之剑(AngelSword)”

    猫宁!!! 参考链接: www.phpinfo.cc/?post=42 https://www.freebuf.com/sectool/149883.html 同事介绍了一款渗透测试框架AngelSw ...

  4. 本周学习总结(ng-zorro/MDN索引/读书笔记)

    按钮 <button ng-button nzType="primary">Primary</button> nzType="" pri ...

  5. JS判断字符串长度(英文占1个字符,中文汉字占2个字符)

    //计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; i ...

  6. python之url编码

    import urllib.parsempp='besttest 自动化测试'print(urllib.parse.quote_plus(mpp)) #url编码print(urllib.parse. ...

  7. 用eclipse-inst-win64.exe安装eclipse出现Java for Windows Missing 的原因

    Java for Windows Missing 因为jdk的版本没有对,我这里是64位的机器上安了32位的jdk,所以一直报这个. 必须换上相对应版本的jdk,提示页面有链接,直接点击就可以下载. ...

  8. 492 Construct the Rectangle 构建矩形

    详见:https://leetcode.com/problems/construct-the-rectangle/description/ C++: class Solution { public: ...

  9. C++ thread operator= 右值引用 vector foreach

    这是 thread 的construct定义: default (1) thread() noexcept; initialization (2) template <class Fn, cla ...

  10. Kali部署openvas初探与实践

    openvas安装 1.我用的清华大学的源,所以我把/etc/apt/source.list中下入如下源地址 #清华大学deb http://mirrors.tuna.tsinghua.edu.cn/ ...