[水题日常]Luogu1113 杂务
这几天又在颓.
我的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 杂务的更多相关文章
- codevs 3070 寻找somebody4(水题日常)
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一天.....sb不见了,有个人要去找他..他发现sb在一个杨辉三角里.. ...
- codevs 1487 大批整数排序(水题日常)
时间限制: 3 s 空间限制: 16000 KB 题目等级 : 黄金 Gold 题目描述 Description !!!CodeVS开发者有话说: codevs自从换了评测机,新评测机的内存计算 ...
- 51nod 1096 距离之和最小(水题日常)
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 X轴上有N个点,求X轴上一点使它到这N个点的距离之和最小,输出这个最小的距离之和. Input 第1行:点的数量 ...
- [水题日常]UVA1639 糖果(Candy,ACM/ICPC Chengdu 2012)
今天来尝试了几道数学期望相关的题,这是我认为比较有趣的一道题 这次不废话啦直接开始~ 一句话题意:两个分别装有n个糖果的盒子,每次随机选一个盒子然后拿走一颗糖(选的概率分别是\(p\)和\((1-p) ...
- [水题日常]UVA11181 条件概率(Probability|Given)
话说好久没写blog了 好好学概率论的第一天,这题一开始完全不会写,列出个条件概率的公式就傻了,后来看着lrj老师的书附带的代码学着写的- 因为我比较弱智 一些比较简单的东西也顺便写具体点或者是按照书 ...
- vijos 1034 家族(水题日常)
描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...
- 洛谷 P1181 数列分段Section I(水题日常)
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 输入文件divide_ ...
- codevs 2728 整数帝国问题(水题日常)
时间限制: 1 s 空间限制: 16000 KB 题目等级 : 白银 Silver 题目描述 Description 在很久以前,在遥远的东方,有一个整数帝国,它里面里居住着大量的正整数,了缓解都 ...
- codevs 1742 爬楼梯(水题日常)
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明家外面有一个长长的楼梯,共N阶.小明的腿很长,一次能跨过一或两阶.有一天,他 ...
随机推荐
- 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理
前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...
- 凭借着这份Spring面试题,我拿到了阿里,字节跳动美团的offer!
一般问题 1.1. 不同版本的 Spring Framework 有哪些主要功能? 1.2. 什么是 Spring Framework? Spring 是一个开源应用框架,旨在降低应用程序开发 ...
- 去年去阿里面试,被问到java 多线程,我是这样手撕面试官的
1.多线程的基本概念 1.1进程与线程 程序:是为完成特定任务,用某种语言编写的一组指令的集合,即一段静态代码,静态对象. 进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,每个程 ...
- pip install 一个本地包时提示error: Microsoft Visual C++ 14.0 is required.
错误如下: error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Too ...
- Vuex form表单处理, 比官网更好的办法
Vuex form表单处理, 比官网更好的办法 问题, 当使用vuex的state作为表单的v-model元素, 虽然简单粗暴, 但这种修改没有经过mutation方法. 在严格模式下会抛出错误 目录 ...
- Centos7安装vscode
CentOS7 安装vscode 最近在Linux环境下写几个程序时发现用vim时总出现一点问题,配置了vim也还是不太习惯,因此就安装了vs ...
- 聊聊ReentrantLock实现原理
ReentrantLock 是常用的锁,相对于Synchronized ,lock锁更人性化,阅读性更强 从LOCK切入 考虑下面的场景如果有A,B线程,同时去执行lock.lock(Lock loc ...
- Jmeter(三十) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy3(详解教程)
1.简介 Badboy为方便自动化数据灵活性,以及脚本的重用,减少工作量:为此提供了脚本参数化的功能,这一篇文章宏哥以度娘搜索的关键字"北京-宏哥"进行参数化为例,宏哥带领你们实战 ...
- 20200311_解决Could not resolve host: mirrorlist.centos.org
[root@localhost ~]# yum -y install wget 已加载插件:fastestmirror Determining fastest mirrors Could not re ...
- PyQt(Python+Qt)学习随笔:model/view架构中QTableView视图的标题显示不正常问题
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在进行QTableView展示数据时,使用了QStandardItemModel的model,并在将 ...