![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树状数组
Doneone_
这个作者很懒,什么都没留下…
展开
-
POJ2481--Cow
POJ2481--Cow题意:给一堆区间(l,r),如果一个区间覆盖另一个区间(要大于不能等于),则说明这个区间(牛)比另一个区间厉害,分别输出每个区间的比自己厉害的区间数量。思路:将区间按右端点r来排序,然后只要从r最右的开始遍历,遇到i.r<(i-1).r则查询i.x的前缀和就是答案了,每个区间都更新前缀和代码:#include<iostream>#inc...原创 2018-07-25 22:13:14 · 158 阅读 · 0 评论 -
MooFest POJ1990
MooFest POJ1990题意:大概就有一堆点,点有权值,求每对点的max(权值)*距离只和思路:按权值从小到大排序后存入,因为从小到大,所以每次存入的时候都是当前权值为最大,将它与前后的距离相乘 用树状数组维护两个值,一个是存坐标和(距离原点),一个是存数目 每次存入点时,坐标的左边坐标和就是x*sum(x,num)-sum(x,pos)...原创 2018-07-25 22:46:35 · 157 阅读 · 0 评论 -
Ultra-QuickSort POJ2299
Ultra-QuickSort POJ2299题意:给一个序列,要求用交换相邻的数字,使其变成升序,也就是问序列每个数的逆序数总和思路:用树状数组维护下前缀就知道了,从最好一个开始存入,这题的坑点就是数据特别大,必须先离散离散化很简单,直接排序权值,然后一个个赋值从1~n代码:#include<iostream>#include<string.h>...原创 2018-07-25 22:53:02 · 180 阅读 · 0 评论 -
Japan POJ3067
Japan POJ3067题目:有2个竖下来的点,给出许多连线,问有多少交叉,思路:连线按左端点a从小到大排序,每次都查询右端点b的后缀和即可(画个图理解)代码:#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int m...原创 2018-07-25 23:08:13 · 274 阅读 · 0 评论