
树状数组
文章平均质量分 77
varinic
这个作者很懒,什么都没留下…
展开
-
zoj 3929 Deque and Balls 树状数组 递推
从i 到i+1 转移时候ans先倍增,再加上a[ i ] 加到双端队列两端时 对答案的贡献(既新出现的递减项)。然后有减法的时候取模一定要 先加mod再%mod,要不然WA到死 QAQ 点击打开链接 递推 #include #include #include #include #include #include #include #include原创 2016-04-11 19:32:50 · 586 阅读 · 1 评论 -
hdu 5792 World is Exploding 树状数组
计算像a,b这样上升的有la对,像c,d这样下降的有lb对,ans=la*lb。这样是有重复的,重复的就是a与c重合,a与d重合,b与c重合,b与d重合这四种情况。那么减去这四种情况就ok了。可以用树状数组预处理出每一位i的左边比a[i]大的有多少La[],少的有多少Li[],右边比a[i]大的有多少Ra[],少的有多少Li[]。最后ans减去Ri[i]*Ra[i]; Li[i]*La[i]原创 2016-08-02 17:59:50 · 596 阅读 · 0 评论 -
FOJ 有奖月赛 2016-8 C Problem C Daxia & Suneast's problem
Problem Description daxia和suneast玩起来取石子游戏,现有n堆石子放成一排,每堆石子颗数为a1,a2,...,an. 然后开始m轮游戏,每轮游戏之前,suneast先把第i堆的石子改成x颗,然后双方开始在第j堆到第k堆之间进行取石子游戏. 取石子规则如下: 1. daxia先取,然后双方轮流,每次取的数量不得超过该堆的一半; 2. 当轮到某一方,而其不能原创 2016-08-17 18:08:14 · 1046 阅读 · 0 评论 -
hdu 5862 Counting Intersections 坐标离散化+树状数组
题目大意:给你与坐标轴平行的线段,问相交点有多少。 我们将与x轴平行的线段分成两个点,左端点与右端点,与y坐标平行的线段取它的x坐标作为一个点,排序。那么一遍扫过去,遇到左端点,对应的y坐标++,遇到右端点对应的y坐标--,遇到第三种点,就是统计当前这个点对应y1,y2坐标之间出现过多少点。支持单点修改,区间求和,线段树树状数组都可以高效求解。 #include #include #inc原创 2016-08-20 14:17:53 · 600 阅读 · 0 评论 -
spoj D-query 区间不同数个数 主席树||离线+树状数组
把区间统计转化为前缀和,这里的前缀和不是普通的前缀和,对相同的ai,只有最右边那个才是有效的。 举个栗子:1 2 2 1 3 这样一个序列有效是这个样子 * * 2 1 3 ,因为1在后面出现过所以前一个无效,同理 2。前缀和则是0 0 1 2 3 ,那么对区间[1,5],[2,5],[3,5],[4,5],..[x,5] 我们都可以用sum[5]-sum[x-1]来求。 这里的一个问题是前缀原创 2016-08-27 16:45:25 · 2327 阅读 · 0 评论 -
hdu 5869 Different GCD Subarray Query 离线+树状数组
题意:给你n个数,每次查询[l,r]区间里所有子区间不同gcd的个数。 我们先来看如何查询区间不同数的个数: spoj D-query 区间不同数个数 主席树||离线+树状数组 上面这道题讨论的是单个点,既对答案有贡献的是单个点,而这里是子区间要怎么处理。 同理,对每个gcd有多个子区间,定义子区间左端点为子区间大小,那么只有最大的那个子区间才是有效的。 这里还要用到gcd性质原创 2016-09-13 16:38:00 · 518 阅读 · 0 评论