码迷,mamicode.com
首页 > 其他好文 > 详细

[水题日常]Luogu1113 杂务

时间:2017-08-25 14:02:28      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:题目   return   class   read   str   print   img   play   空间   

这几天又在颓.

我的blog难度目前还比较低,主要面向像我这样子的新手(当然内容也会尽量讲得具体清楚一些)x

如果有错误还请指出~

 


 

 

写完随笔之后才去翻了一下这题题解之后才注意到这题是有序的

QAQ完全不用像我这么麻烦啊x

 


 

 

题目链接<<

题目大意:

  • 有n个杂务,完成每个杂务都需要一个时间,并且有的杂务需要在准备工作(就是其他的一些杂务)完成之后才能进行,求完成所有杂务的时间.
  • 互相没有关系的杂务可以同时进行.
  • n<=1e5,每个杂务的准备工作不超过100个.

 


 

 

噫这应该算是经典题?(然而我今天才做x

一开始没看到准备工作不超过一百个…(emm空间开不起啊咋办?

然后又去看了一眼题面x日常石乐志

 

  • 好的我们把每个杂务看成一个有权值的点.
  • 杂务需要准备工作那就向准备工作连一条有向边.
  • 然后应该是求dag最长路?
  • 怎么求最长路啊?
  • 我也不会求啊.
  • 直接考虑求到每个点的最长路.
  • 读入的时候直接判一个杂务有没有准备工作,没有的话直接打上标记,到这个点的最长路就是这个点的权值.
  • 遍历每个点没有标记的话就记忆化dfs(跟dp差不多?
  • 这么做应该可以(反正我过了=w=

 

贴代码x

 

技术分享
#include<cstdio>
const int N=10005;
const int M=1000005;
struct edge{int to,next;}edges[M];
int head[N],cnt;
int n,len,ans;
int dp[N],w[N];
bool mark[N];
inline int read()
{
    int s=0;char c;while((c=getchar())<0||c>9);
    do{s=s*10+c-0;}while((c=getchar())>=0&&c<=9);return s;
}
inline int max(int x,int y){return x>y?x:y;}
inline void addEdge(int u,int v)
{
    edges[++cnt]=(edge){v,head[u]};
    head[u]=cnt;
}
inline int dfs(int x)
{
    if(mark[x])return dp[x];
    int temp=0;
    for(int i=head[x];i;i=edges[i].next)
    {
        temp=max(temp,dfs(edges[i].to));
    }mark[x]=1;
    return (dp[x]=temp+dp[x]);
}
int main()
{
    n=read();
    for(int i=1;i<=n;i++)
    {
        int key,val,temp,tot=0;
        key=read();val=read();dp[key]=val;
        while(temp=read())
        {
            addEdge(key,temp);
            tot++;
        }
        if(tot==0)mark[key]=1;
    }
    for(int i=1;i<=n;i++)if(!mark[i])dfs(i);
    for(int i=1;i<=n;i++)ans=max(ans,dp[i]);
    printf("%d",ans);
    return 0;
}
View Magical Code~

 

[水题日常]Luogu1113 杂务

标签:题目   return   class   read   str   print   img   play   空间   

原文地址:http://www.cnblogs.com/yoooshinow/p/7427380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!