09 2023 档案
摘要:方法一:差分 因为是先修改后查询,很容易想到差分,但因为数据值域 过大,所以不能使用差分数组,而应用 map 进行存储,如代码所示: map<int, int> diff; // 正常进行差分操作 for(auto& f : flowers) diff[f[0]]+
阅读全文
摘要:异或和按位处理的典型例题。要求所有子区间异或和乘区间长度的总和,朴素的方法是 地枚举区间,显然无法通过。 因为涉及异或和,而异或运算不进位,故自然地想到把 写成二进制形式,单独研究每一位的贡献,最后再合并。这是处理此类问题的一般思路。 1. 二进制拆分 比方说,
阅读全文
摘要:基环树上的“追及相遇”问题。 考虑什么情况下,Valeriu 能“无限期”地从 Marcel 手中逃离。参考样例 1,我们发现当 Valeriu 进入基环树的环中,他总能通过预判,逃往 Marcel 的反方向,避免被抓;而如果两者都在子树中,Marcel 就能步步紧逼,将 Valeriu 堵在叶子结
阅读全文
摘要:传送门。要求使得区间和小于 的子区间长度,显然可以二分处理。二分区间长度,枚举区间左端点,check 两项内容:区间是否合法(符合 ),区间和是否小于 。对于当前区间长度,只要有一个区间满足条件,即返回真。 区间和可以通过前缀和 \
阅读全文
摘要:考查异或的基本性质。 对于操作2,用两个变量 记录 位置的异或和,在查询时直接输出即可。那么,在操作 1 如何更新 ? 如果操作 1 只改变一个数,比如将 从 改为 ,那么我们只需将 \(a_
阅读全文
摘要:传送门。答案要求统计“走过的边数”,这个不是很好统计,但是统计“哪些点不需要去”比较简单: 没有金币的子树不需要去; 删去 1 之后的叶子结点不需要去; 删去 1,2 之后的叶子结点不需要去。 可以证明,其他的点都需要去到。 删去上述结点的依据是度数(都是叶子结点)和金币,自然地想到使用拓扑排序处理
阅读全文