今天的题目……
不好评价
A,B,D都是水题,不讲了
C题
题目比较难理解,但做过类似的题,模拟一下就行了
E题
先给定n个点之间的关系,给Q次操作,每次给节点i的子树中深度为l~r的数加上m,求每个节点权值的和。n,Q<=1e6,数据保证是一颗树且根节点为1,根节点深度为1
很容易想到DSU+线段树,但有没有更简单的方法?
树上差分
考虑离线,枚举到点X时拿出以X为根节点的询问,更新差分数组。
为什么是对的?
对于深搜,同一时刻搜到的相同深度的数“只会有一个”,不会相互影响,以X为根节点也可以保证不受前面点更新的影响
就过了
F
也是矩阵题,参考昨天的博客
G
一道非常有思维的贪心
共有B元,给n个物品,m张优惠券,每个物品有一个价格p,用优惠券后可以便宜s元,求最多能买多少个物品(每个物品限买1次)
对于买的物品,容易想到让买来的物品优惠力度最大
于是我们按照s从小到大对物品排序
接下来枚举i,表示前i个数用优惠券,后几个数不用
这时用一个堆维护序列前半段#实际价格#最小的几个数
用线段树维护后半段序列最小的数的和就行了
H
超长平衡树,不会打