【CF536E】Tavas on the Path

Descriptions

给出一棵树,每条边上有边权。
定义函数T(S)如下,其中S是一个01串,S串包含了m“块“1。
T(S)=mi=1fxi
其中 f 是一个给出的序列,xi是第i块的大小。
要求回答Q个形如“x y l“的询问。
对于每个询问,考虑u到v路径上的所有边的长度 e1e2...ek
根据e序列构造s序列: Si=1 当且仅当 eil
要求回答 T(S) 的值。

Analysis

先考虑一条链上怎么做。
离线处理。
考虑用线段树来维护这条链上的信息。
对于一段,我们需要知道这一段左端1的个数,右端1的个数,以及中间的贡献值。
然后合并两段的方式就很显然了。
最后再套上树链剖分就可以通过了。

Debug logs

1st submission : 11186274 2015-05-21 11:31:03 YvesCjl 536E - Tavas on the Path GNU C++ Wrong answer on test 3 779 ms 17600 KB
debug : “grphd” 数组没有被赋值
2nd submission : 11186381 2015-05-21 11:43:28 YvesCjl E - Tavas on the Path GNU C++ Wrong answer on test 3 1154 ms 17600 KB
debug : 在链剖上跳过程中,应该跳两者组头较深者而不是跳两者较深者。
3rd submission : 11186688 2015-05-21 12:13:18 YvesCjl 536E - Tavas on the Path GNU C++ Accepted 1216 ms 18300 KB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值