第十三次CCF CSP认证(2018年3月)真题二次求和

问题描述
  给一棵 n 个节点的树,用 1 到 n 的整数表示。每个节点上有一个整数权值 ai。再给出两个整数 L,R。现在有 m 个操作,每个操作这样描述:
  给定树上两个节点 u,v 和一个整数 d,表示将树上 u 到 v 唯一的简单路径上每个点的权值 ai 都加上 d。之后求树上所有节点个数大于等于 L 小于等于 R 的简单路径的节点权值和之和。注意这里有两次求和:对于一条节点个数大于等于 L 小于等于 R 的简单路径,求出它所有节点的权值之和;然后对所有这样的路径,对它们的权值和再进行求和。因为答案很大,只用输出对 Q=1,000,000,007 取余的结果即可。
输入格式
  从标准输入读入数据。
  包含多组数据。数据的第一行包含一个正整数 T,表示数据组数。保证 T=10。
  每组数据的第一行包含 4 个非负整数 n,m,L,R,分别表示节点个数、操作个数和询问相关的两个参数。保证 1≤L≤R≤n。
  第二行包含 n 个整数,表示 ai。保证 0≤ai

猜你喜欢

转载自blog.csdn.net/xyisv/article/details/79602866