树状数组
Ray.C.L
不开longlong见祖宗
展开
-
楼兰图腾(树状数组)
思路:有题可知,y1——yn是<=n的,那么我们要求有多少V形状的个数可以,先正方向跑一遍用big1[i]表示i位置前有多少个数大于a[i],每次统计完后加入树状数组。反方向跑一遍时big2[i]表示i位置后有多少个大于a[i],每次统计完加入树状数组。此时我们知道各个位置左右两边有多少个数大于他,那么每个位置能构成多少个V形状就是big1[i]*big2[i],求反向V同理。代码:#include<bits/stdc++.h>using namespace std;const .原创 2021-06-07 17:32:40 · 119 阅读 · 0 评论 -
小魂和他的数列(DP+树状数组)
思路:根据LIS我们扩展一下得到的递推式如下其表示为以i为结尾长度为j的最长上升子序列的数量,我们开K个树状数组去维护长度为j(2<=j<=k)的LIS的数量。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>//#include<bits/st.原创 2020-07-08 16:24:36 · 226 阅读 · 0 评论 -
POJ3321 Apple Tree(树状数组+dfs序)
题意:有n个点,每个点都有苹果,操作1 查询 点x的子树上有又多少个苹果包括自身,操作2 若点x上有苹果则摘下,没有则长出一个思路:用树状数组去维护苹果树上的苹果个数,dfs序建树获取树上子树和根的区间。#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>//#incl原创 2020-07-05 13:34:13 · 215 阅读 · 0 评论 -
华华开始学信息学(树状数组+分块)
思路:吧数组分成sqrt(n)块 当给出更新的长度大于sqrt(n)时我们去树状数组暴力更新每个点,小于时,我们让lazy[x]+=y表示下标x的倍数的位置每个都+=y,询问时先算树状数组的区间,然后再看lazy是否有过标记,ans+=(10/2-3/2)*lazy【2】意思是【3——10】这个区间2的倍数的个数所给出的贡献。#include <cstdio>#include <cstring>#include <algorithm>#include <s.原创 2020-07-05 10:29:33 · 216 阅读 · 0 评论 -
珂朵莉的数列(树状数组)
思路:对于a[L]>a[R] L<R 逆序数对所被包含的区间是左端点(1——L)到右端点(R——n)所以他的贡献是L*(n-r+1)我们用树状数组去求逆序数对,答案会爆ll用int128#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include<iostream>#include<vector>#include&..原创 2020-07-04 11:11:12 · 352 阅读 · 0 评论 -
A Simple Problem with Integers POJ - 3468(线段树区间修改)
You have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the su...原创 2019-08-08 09:36:20 · 160 阅读 · 0 评论 -
敌兵布阵-HDU1166(线段树,树状数组)
C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以...原创 2019-08-07 19:34:37 · 217 阅读 · 0 评论