题目名称 | 1535. [ZJOI 2004] 树的果实 |
---|---|
输入输出 | treesfruits.in/out |
难度等级 | ★★★ |
时间限制 | 2000 ms (2 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | cstdio 于2014-02-27加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:26, 提交:44, 通过率:59.09% | ||||
Hzoi_Hugh | 100 | 0.563 s | 4.10 MiB | C++ |
Wilder | 100 | 0.568 s | 9.09 MiB | C++ |
┭┮﹏┭┮ | 100 | 0.698 s | 20.53 MiB | C++ |
jacken | 100 | 0.762 s | 7.76 MiB | C++ |
LadyLex | 100 | 0.783 s | 4.87 MiB | C++ |
Hzoi_Maple | 100 | 0.852 s | 5.65 MiB | C++ |
胡嘉兴 | 100 | 0.861 s | 4.06 MiB | C++ |
KZNS | 100 | 0.876 s | 4.88 MiB | C++ |
kemoto | 100 | 0.892 s | 10.40 MiB | C++ |
Hzoi_Hugh | 100 | 0.906 s | 4.10 MiB | C++ |
本题关联比赛 | |||
4043级2023省选练习赛1 |
关于 树的果实 的近10条评论(全部评论) | ||||
---|---|---|---|---|
神题,树状数组的多种用法
| ||||
树剖套线段树套平衡树果然慢= =
| ||||
重新看了一遍论文,才发现论文中说的方法和何林的那篇不一样。。。。
算了,不想再写一遍了 | ||||
有意思的一道题……
|
森林中生长着许多奇特的果树,它们不仅外形独特,其果实更是可口。这天,两只小虫 $Nileh$ 和 $Nixed$ 决定一起分享一颗果树。他们从早晨一直辛勤工作到下午,终于把这颗果树锯倒。他们观察着这颗果树,果树开始端是露出地面的根部,接着像其他果树一样,有着诸多分叉(如图所示就是一颗果树),在每个分叉处生长着果实,自然 $Nileh$ 和 $Nixed$ 的食物就是这些果实了!他们准备把果树分成两部分,每个虫虫得到各自的一部分,而分果树的方法就是选择一个分叉点,虫虫将他们咬断(自然分叉点上的果实也被扔掉了),这样果树就变成了两个部分(每个部分不一定是连在一起的):分叉点上面的部分和分叉点下面的部分。$Nileh$ 和 $Nixed$ 就会各自选一个部分吃啦!比如对于左边这颗果树,如果他们咬掉蓝色的果子,那么就被分为红色和黄色的两个部分。
考虑到被咬掉的果子会被浪费,他们想尽可能的减少浪费,于是虫虫给每个果子一个美味值,对于每个果子,他们决定计算如果咬掉这个果子,上面部分、下面部分和从树根到这个分叉点的路径中比这个果子更美味的果子各有多少个。他们以此来选择最终要被咬掉的果子是哪一个。遗憾的是果树可能很庞大,而小虫几乎是不会计算的,身为程序员的你帮帮他们吧。
输入文件第一行一个正整数 $n(n \leq 10^5)$ 表示树的分叉数(包括树根)。
输入文件的第 $i(2 \leq i \leq n)$ 行一个数 $p_i$,表示分叉 $i$ 的上一级分叉的编号 $(p_i<i)$。($1$ 号分叉即树根,它没有上级分叉点)
输入文件的第 $n+i(1 \leq i \leq n)$ 行一个正整数 $a_i$,表示生长在 $i$ 号分叉点上的果实的美味值。(每个果子的美味值不相等)
输出共 $n$ 行,每行三个数,分别表示咬掉第 $i$ 个果实后上面部分、下面部分、从树根到这个分叉点的路径中比它美味的果实数。
4 1 1 2 2 4 1 3
2 0 0 0 0 0 0 3 1 0 1 1
点击下载样例2