- 博客(4)
- 收藏
- 关注
原创 XOR on Segment(线段树,二进制拆位)
题目描述看到异或我们很自然地想到二进制拆位。我们对于线段树的每个节点,建一个数组sumsumsum。sum[i]sum[i]sum[i]表示当前节点的儿子中有多少个数的二进制有第i位因为这题是区间修改,所以再建一个lazy[i]lazy[i]lazy[i]表示懒标记再对线段树的代码稍作调整这题就大功告成了!贴个代码# include <bits/stdc++.h>usi...
2020-02-05 22:04:29
347
2
原创 P4513 小白逛公园 & SP1716 GSS3 - Can you answer these queries III(线段树维护区间最大字段和)
[题目描述1] 题目描述2这两道题几乎一模一样,都是线段树实现单点修改,查询区间最大字段和的功能这类题目的难点通常在于如何pushuppushuppushup 和 pushdownpushdownpushdown(这题因为是单点修改没有pushdownpushdownpushdown)先说一句废话一个区间的最大字段和有三种情况: 它左区间的最大字段和,它右区间的最大字段和,它左区间取一部分...
2020-02-05 21:52:45
161
1
原创 [TJOI2018]数学计算(线段树)
题目描述因为我在学校做过类似的题,所以这题一眼秒了这题我们首先会想到乘法逆元,但发现不太可做。这时我们仔细考虑平衡树,发现我们可以按照操作得到一个数组。最后通过线段树查询所有数的乘积。对于操作1,我们可以将数组第iii个数由1变为xxx对于操作2,我们可以将数组第iii个数的值变为1输出的话,甚至连线段树的queryqueryquery函数都不用写,直接输出根节点的值就可以了# in...
2020-02-01 16:39:15
1330
2
原创 [NOI2004]郁闷的出纳员(Splay)
[NOI2004]郁闷的出纳员(Splay)题目描述首先这题一看就是道平衡树。我们来考虑如何用平衡树实现这个操作首先,如果要给员工加工资或者扣工资,平衡树肯定是实现不了。我们要用一个变量来记录目前加了多少工资,我们可以先叫它lazylazylazy,我们每个询问在取出的时候加上lazylazylazy就好了。但是如果一个员工是新加入公司的,那么前面给员工加的工资它肯定是享受不到,为了解决这...
2020-02-01 16:13:40
1406
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人