P3241 [HNOI2015]开店

    • 550通过
    • 1.9K提交
  • 题目提供者 洛谷
  • 评测方式 云端评测
  • 标签 分治 动态树 最近公共祖先,LCA 2015 湖南 高性能
  • 难度 NOI/NOI+/CTSC
  • 时空限制 6000ms / 512MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 体验新版界面

    最新讨论 显示

    推荐的相关题目 显示

    题目描述

    风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学。最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱。

    这样的想法当然非常好啦,但是她们也发现她们面临着一个问题,那就是店开在哪里,面向什么样的人群。很神奇的是,幻想乡的地图是一个树形结构,幻想乡一共有 n个地方,编号为 $1$ 到$n$ 被$n-1$ 条带权的边连接起来。每个地方都住着一个妖怪,其中第$i$ 个地方的妖怪年龄是 $x_i$ 。

    妖怪都是些比较喜欢安静的家伙,所以它们并不希望和很多妖怪相邻。所以这个树所有顶点的度数都小于或等于 $3$ 。妖怪和人一样,兴趣点随着年龄的变化自然就会变化,比如我们的$18$ 岁少女幽香和八云紫就比较喜欢可爱的东西。幽香通过研究发现,基本上妖怪的兴趣只跟年龄有关,所以幽香打算选择一个地方$u$ ($u$ 为编号),然后在$u$ 开一家面向年龄在$L$ 到$R$ 之间(即年龄大于等于$L$ 小于等于$R$ )的妖怪的店。

    也有可能$u$ 这个地方离这些妖怪比较远,于是幽香就想要知道所有年龄在$L$ 到$R$ 之间的妖怪,到点$u$ 的距离的和是多少(妖怪到$u$ 的距离是该妖怪所在地方到$u$ 的路径上的边的权之和),幽香把这个称为这个开店方案的方便值。

    幽香她们还没有决定要把店开在哪里,八云紫倒是准备了很多方案,于是幽香想要知道,对于每个方案,方便值是多少呢。

    输入输出格式

    输入格式:

    第一行三个用空格分开的数$n,Q$ 和$A$ ,表示树的大小、开店的方案个数和妖怪的年龄上限。

    第二行$n$ 个用空格分开的数$x_1,x_2,\ldots,x_n;x_i$ 表示第$i$ 个地点妖怪的年龄,满足$0\le x_i\lt A$ 。(年龄是可以为$0$ 的,例如刚出生的妖怪的年龄为$0$ 。)

    接下来$n-1$ 行,每行三个用空格分开的数$a$ 、$b$ 、$c$ ,表示树上的顶点$a$ 和$b$ 之间有一条权为$c(1\le c\le1000)$ 的边,$a$ 和$b$ 是顶点编号。

    接下来$Q$ 行,每行三个用空格分开的数$u,a,b$ 。

    对于这$Q$ 行的每一行,用$a,b,A$ 计算出$L$ 和$R$ ,表示询问”在地方$u$ 开店,面向妖怪的年龄区间为$[L,R]$ 的方案的方便值是多少“。

    对于其中第$1$ 行,$L$ 和$R$ 的计算方法为:$L=min(a$ %$A,b$ %$A),R=max(a$ %$A,b$ %$A)$ 。

    对于第$2$ 到第$Q$ 行,假设前一行得到的方便值为$ans$ ,那么当前行的$L$ 和$R$ 计算方法为: $L=min((a+ans)$ %$A,(b+ans)$ %$A), R=max((a+ans)$ %$A,(b+ans)$ %$A)$ 。

    输出格式:

    对于每个方案,输出一行表示方便值。

    输入输出样例

    输入样例#1: 复制
    10 10 10
    0 0 7 2 1 4 7 7 7 9
    1 2 270
    2 3 217
    1 4 326
    2 5 361
    4 6 116
    3 7 38
    1 8 800
    6 9 210
    7 10 278
    8 9 8
    2 8 0
    9 3 1
    8 0 8
    4 2 7
    9 7 3
    4 7 0
    2 2 7
    3 2 1
    2 3 4
    输出样例#1: 复制
    1603 
    957 
    7161 
    9466 
    3232 
    5223 
    1879 
    1669 
    1282 
    0

    说明

    满足$n\le1.5*10^5,Q\le2*10^5$ 。对于所有数据,满足 $A<=10^9$

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。