
树状数组
文章平均质量分 56
Tekim
个人写点东西的地方
展开
-
洛谷p1198最大数
原题 数据大小是1e6,实现单调修改和区间最大值,和树状数组模板类似,不过有地方需要注意。 求最后l个值得最大值,只需要反着装值,到x求后l,那么求x+l之前的最值就可以了(x到n的值已求)。 #include #include #include #include #include #include #define in(x) scanf("%lld",&x); using namespac原创 2017-08-31 16:46:34 · 426 阅读 · 0 评论 -
洛谷p1496火烧赤壁
原题 排着找就行了,但是范围太大,需要离散化一下,左端点由小到大排序,然后每个进行判断。 另外结构体习惯用stablesort。 #include #include #include #include #include #include #include #define in(x) scanf("%d",&x); using namespace std; int n; struct node原创 2017-08-31 15:54:24 · 757 阅读 · 0 评论 -
洛谷p1908逆序对
原题 这里有一个树状数组的做法,先离散化,由小到大排序,每枚举到一个点,就加入树状数组,然后计算之前比他大的值,加入ans。 #include #include #include #include #include #include #define in(x) scanf("%d",&x); using namespace std; int n,p[40001],c[40001]; struc原创 2017-08-31 15:38:06 · 448 阅读 · 0 评论 -
c++树状数组2模板
原题 区间修改,单点求值,那么都需要logn的复杂度,将修改的效果添加到大节点上,向下遍历树,这样最后求单点时向上遍历树。 #include #include #include #include #include #include #define in(x) scanf("%d",&x); using namespace std; int n,m,a[500001],c[500001]; vo原创 2017-08-31 15:29:11 · 402 阅读 · 0 评论