摘要: 这道题的原理是普通的二维差分和二维前缀和,但是因为不能开二维数组,因此映射到一维就行 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e7+10; const int mod=1e9+7; 阅读全文
posted @ 2020-10-24 16:01 朝暮不思 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 线段树题目,维护的信息非常对。 因为我们看到的是区间修改和区间查询,所以可以想到用线段树 现在的要求是往前后插数,求的是数的和。 因此我们可以考虑维护lazy标记往前插的数,往后插的数,和插的位数 并且还要维护答案sum1,以及区间的长度sum2,这是因为区间的长度是不定的,而我们维护区间和的时候, 阅读全文
posted @ 2020-10-24 12:49 朝暮不思 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 这题精妙的一点就是将通过把性质(最多一位是奇数)转化成前缀和异或和,之后任意两点之间的数量就是异或值。 这样我们把每条边的权值都当成1<<i即可。因为我们要对每个点计算答案,所以需要用树上启发式合并,也就是保留重儿子,遍历所有其他节点。 对于一个点的答案,他有三个来源,1是直接子树中的答案,2是以u 阅读全文
posted @ 2020-10-24 10:07 朝暮不思 阅读(103) 评论(0) 推荐(0) 编辑