题目名称 2019. [NOI 2015]软件包管理器
输入输出 manager.in/out
难度等级 ★★★☆
时间限制 1500 ms (1.5 s)
内存限制 512 MiB
测试数据 20
题目来源 GravatarSatoshi 于2015-07-23加入
开放分组 全部用户
提交状态
分类标签
NOI 树链剖分
分享题解
通过:155, 提交:317, 通过率:48.9%
Gravatar真的菜 100 1.722 s 7.18 MiB C++
GravatarMarvolo 100 1.893 s 11.00 MiB C++
Gravatarlemonalien 100 1.998 s 7.56 MiB C++
Gravatarzjh 100 2.055 s 7.56 MiB C++
Gravatarhee 100 2.166 s 7.54 MiB C++
Gravatar┭┮﹏┭┮ 100 2.360 s 24.39 MiB C++
GravatarFisher. 100 2.363 s 7.18 MiB C++
GravatarConanQZ 100 2.675 s 7.16 MiB C++
Gravatar哒哒哒哒哒! 100 2.688 s 7.54 MiB C++
GravatarRealFan 100 2.708 s 12.91 MiB C++
本题关联比赛
NOI2015Day1
EYOI常规赛 3rd & 新年特辑
EYOI常规赛 3rd & 新年特辑
关于 软件包管理器 的近10条评论(全部评论)
1A淼淼
Gravatar┭┮﹏┭┮
2023-12-09 20:48 15楼
好久没体验过写这么长的代码还能一次 AC 的感觉了QAQ
upd:今天瞎翻代码的时候发现树链剖分里面的线段树修改参数传错了awa(本来应该是 $k$,我全设成 $1$ 了QAQ,现在改对了),就这还能 AC,只能说 CCF 的数据太水了叭qwq
Gravataryrtiop
2022-02-07 18:21 14楼
人傻代码长,常数还巨TM大。
GravatarHT008
2018-01-06 17:28 13楼
我不仅是人傻自带大常数,而且是人傻自带冗长代码;
GravatarFisher.
2017-11-05 20:05 12楼
树剖过之,很裸
GravatarJustWB
2017-08-14 21:08 11楼
身败名裂......
GravatarAntiLeaf
2017-01-03 14:19 10楼
把x=father[top[x]]写成x=father[x]查了一下午qaq
我是傻逼qaqqqqqqqqqqqqqqqqqqqqqqqqqqqq
题解(骗访问):http://www.cnblogs.com/JSL2018/p/5907108.html
Gravatarcdcq
2016-09-25 21:43 9楼
强行邀一波qaq http://sxysxy.org/blogs/36
Gravatarsxysxy
2016-09-18 21:02 8楼
GravatarFmuckss
2016-09-13 13:43 7楼
maintain会挂掉,不要用
Gravatarcrehs
2016-08-08 21:23 6楼

2019. [NOI 2015]软件包管理器

★★★☆   输入文件:manager.in   输出文件:manager.out   简单对比
时间限制:1.5 s   内存限制:512 MiB

【题目描述】

你决定设计你自己的软件包管理器。不可避免的,你要解决软件包之间的依赖关系。如果A依赖B,那么安装A之前需安装B,卸载B之前须卸载A。0号软件包不依赖任何软件包。依赖关系不存在环(包括自环)。

你的任务是,求出每次安装、删除操作会改变多少个包的状态。

安装一个已安装的软件包,或者卸载一个未安装的软件包,都不会改变任何软件包的安装状态,即在此情况下,改变安装状态的软件包数为0

每次操作不仅需要计算安装软件包数,还作为操作影响后来的安装/删除

【输入格式】

第一行一个整数n,表示软件包的总数。

随后n-1个整数$a_1,a_2,...a_{n-1}$,表示第i个软件包依赖第$a_i$个软件包

接下来一行一个整数q,表示询问数

之后q行,每行一个询问,询问分为两种

install x:表示安装x

uninstall x:表示卸载x

【输出格式】

q行,每行一个整数,为第i步操作改变安装状态的软件包数

【样例输入1】

7
0 0 0 1 1 5
5
install 5
install 6
uninstall 1
install 4
uninstall 0

【样例输出1】

3
1
3
2
3

【样例说明1】

一开始所有的软件包都处于未安装状态。

安装5号软件包,需安装0,1,5三个软件包

之后安装6号软件包,只需安装6号软件包。此时安装了0,1,5,6四个软件包。

卸载1号软件包需要卸载1,5,6三个软件包,此时只有0号软件包还处于安装状态

之后安装4号软件包,需安装1,4两个软件包。此时0,1,4处于安装状态

最后,卸载0号软件包会卸载所有的软件包

【样例输入2】

10
0 1 2 1 3 0 0 3 2
10
install 0
install 3
uninstall 2
install 7
install 5
install 9
uninstall 9
install 4
install 1
install 9

【样例输出2】

1
3
2
1
3
1
1
1
0
1

【数据范围】

1,2:n=5000 q=5000

3,4:n=100000 q=100000 没有卸载操作

5,6,7,8 n=100000,q=100000 依赖关系和操作随机

9-20 n=100000,q=100000 不随机

【来源】

NOI2015Day1T2