题目名称 1931. [ZJOI 2015] 幻想乡战略游戏
输入输出 zjoi15_tree.in/out
难度等级 ★★★★
时间限制 6000 ms (6 s)
内存限制 256 MiB
测试数据 20
题目来源 GravatarAsm.Def 于2015-04-13加入
开放分组 全部用户
提交状态
分类标签
树分治 ZJOI LCA RMQ 树链剖分 线段树
分享题解
通过:73, 提交:213, 通过率:34.27%
GravatarQwQ 100 3.336 s 8.79 MiB C++
Gravatardashgua 100 4.112 s 11.76 MiB C++
Gravatarnodgd 100 4.649 s 6.44 MiB C++
Gravatar梦那边的美好ET 100 4.667 s 16.12 MiB C++
GravatarShirry 100 4.914 s 8.63 MiB C++
GravatarLink 100 5.035 s 14.16 MiB C++
GravatarZlycerQan 100 5.252 s 15.57 MiB C++
Gravatarzrnlkc 100 5.395 s 18.72 MiB C++
GravatarHzoi_Hugh 100 6.084 s 35.90 MiB C++
GravatarGintoki 100 6.199 s 35.89 MiB C++
本题关联比赛
4043级2023省选练习赛6
关于 幻想乡战略游戏 的近10条评论(全部评论)
10 5
1 2 1
2 3 1
2 4 1
1 5 1
2 6 1
2 7 1
5 8 1
7 9 1
1 10 1
3 1
2 1
8 1
3 1
4 1
GravatarShirry
2018-01-22 00:41 12楼
。。。这题比那个zjoi07年的捉迷藏友好一点啊。。。
GravatarLadyLex
2017-12-07 19:46 11楼
我的是正解吗?复杂度玄学到O(Q*20*(logn)^2)
GravatarFoolMike
2017-05-05 14:29 10楼
555我讨厌Linux的lld
Gravatarhebomou
2016-06-06 12:13 9楼
这题有个很有意思的规律。。。。。。
Gravatarstdafx.h
2016-03-10 10:42 8楼
回复 @nodgd :
maya= =暴力居然真能过?(clj出数据这么懒吗……)
GravatarAsm.Def
2015-05-02 17:38 7楼
暴力2.2秒碾压标程,求不加强数据,顺便求超越
Gravatarnodgd
2015-05-02 17:14 6楼
回复 @Chenyao2333 :
惊现晨耀!Orzorzorzorzorzorzorzorz……
GravatarAsm.Def
2015-04-23 22:04 5楼
回复 @Asm.Def : 最有意思的事情就是看萌帝和夹心两个神犇互相Orz。Orz
GravatarChenyao2333
2015-04-23 21:32 4楼
回复 @cstdio :
然而我用于写代码的时间是萌帝的数十倍……Otzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
GravatarAsm.Def
2015-04-23 20:25 3楼

1931. [ZJOI 2015] 幻想乡战略游戏

★★★★   输入文件:zjoi15_tree.in   输出文件:zjoi15_tree.out   简单对比
时间限制:6 s   内存限制:256 MiB

【题目描述】

幽燕正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽燕还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽燕一眼根本看不过来,更别说和别人打仗了。


在打仗之前,幽燕现在面临一个非常基本的管理问题需要解决。


整个地图是一个树结构,一共有 $n$ 块空地,这些空地被 $n-1$ 条带权边连接起来,使得每两个点之间有一条唯一的路径将它们连接起来。


在游戏中,幽燕可能在空地上增加或者减少一些军队。同时,幽燕可以在一个空地上放置一个补给站。如果补给站在点 $u$ 上,并且空地 $v$ 上有 $d_v$ 个单位的军队,那么幽燕每天就要花费 $d_v \times \text{dist}(u,v)$ 的金钱来补给这些军队。由于幽燕需要补给所有的军队,因此幽燕总共就要花费为 $\sum (d_v \times \text{dist}(u,v))$(其中 $1 \leq v \leq N$)的代价,$\text{dist}(u,v)$ 表示 $u$ 和 $v$ 在树上的距离(唯一路径的权和)。


因为游戏的规定,幽燕只能选择一个空地作为补给站。在游戏的过程中,幽燕可能会在某些空地上制造一些军队,也可能会减少某些空地上的军队,进行了这样的操作以后,出于经济上的考虑,幽燕往往可以移动他的补给站从而省一些钱。但是由于这个游戏的地图是在太大了,幽燕无法轻易的进行最优的安排,你能帮帮她吗?


你可以假定一开始所有空地上都没有军队。

【输入格式】

第一行两个数 $n$ 和 $Q$ 分别表示树的点数和幽燕操作的个数,其中点从 $1$ 到 $n$ 标号。


接下来 $n-1$ 行,每行三个正整数 $a,b,c$,表示 $a$ 和 $b$ 之间有一条边权为 $c$ 的边。


接下来 $Q$ 行,每行两个数 $u,e$,表示幽燕在点 $u$ 上放了 $e$ 单位个军队(如果 $e<0$,就相当于是幽燕在 $u$ 上减少了 $|e|$ 单位个军队,说白了就是 $d_u←d_u+e$)。


数据保证任何时刻每个点上的军队数量都是非负的。

【输出格式】

对于幽燕的每个操作,输出操作完成以后,每天的最小花费,也即如果幽燕选择最优的补给点进行补给时的花费。

【样例1输入】

10 5
1 2 1
2 3 1
2 4 1
1 5 1
2 6 1
2 7 1
5 8 1
7 9 1
1 10 1
3 1
2 1
8 1
3 1
4 1

【样例1输出】

0
1
4
5
6

【样例2/3】

点击下载样例2/3

【数据规模与约定】

对于 $15\%$ 的数据:$n \leq 5000,Q \leq 2000$;

另有 $10\%$ 的数据:$n \leq 10^5,Q \leq 10^5$,这个树的结构是一条链;

另有 $5\%$ 的数据:$n \leq 10^5,Q \leq 10^5$,这个树是随机生成的,生成方法为对于每个点 $i>1$ ,在 $<i$ 的点中随机一个作为它的父亲;

另有 $5\%$ 的数据:$n \leq 10^5,Q \leq 10^5$,这个树的结构是一个十字(即两条链通过一个公共点相交,例子见下图);

另有 $5\%$ 的数据:$n \leq 10^5,Q \leq 10^5$,这个树的结构是一个以 $1$ 号节点为根的完全二叉树,并且标号方法与二叉堆相同(我相信大家都知道什么是完全二叉树,就不说明了);

另有 $30\%$ 的数据:$n \leq 10^5,Q \leq 10^5$,幽燕只会增加军队(所有 $0 \leq e$);

另有 $30\%$ 的数据:$n \leq 10^5,Q \leq 10^5$。

对于所有数据,$1\le c\le 10^3$,$0\le |e| \le 10^3$,$1\le n\le10^5$,$ 1\le Q\le10^5$ 。

非常神奇的是,对于所有数据,这棵树上的点的度数都不超过 $20$,并且 $1 \leq n,Q$。

【来源】

ZJOI2015 by 陈立杰