树状数组
lemondinosaur
转圈圈 不停转圈圈 然后摔倒
展开
-
#整体二分,树状数组#洛谷 3250 JZOJ 4450 网络
题目分析考虑整体二分,对于操作0在树上差分,用树状数组实现,预处理qqq个询问的Lca\text{Lca}Lca,然后对于操作2,若满足当前修改操作都符合子树里的增加,那么放在左边,否则放在右边;对于操作0、1,若重要度小于等于midmidmid,选择左区间,否则树上差分并选择右区间,但是最后修改操作要撤销,时间复杂度O(qlog2n)O(qlog^2n)O(qlog2n)代码#inc...原创 2019-11-10 20:39:48 · 155 阅读 · 1 评论 -
#主席树,二分,树状数组#洛谷 2617 Dynamic Ranking
TLE分块题解题目区间第kkk大支持单点修改分析如果没有修改操作,就真的只是一道主席树裸题,但是加上修改操作,就不得不使用树状数组维护,其实思路比较简单,主要考验码题能力 (在这一点我是最菜的呀)代码#include <cstdio>#include <cctype>#include <algorithm>#define rr regis...原创 2019-10-28 21:49:48 · 100 阅读 · 0 评论 -
#主席树、二分、树状数组#洛谷 3157 JZOJ 2287 动态逆序对
题目分析首先如果不带修改操作那么就是一道主席树题目,但是既然有了修改,那么还必须用上树状数组维护,时间复杂度O(nlog2n)O(nlog^2n)O(nlog2n)代码#include <cstdio>#include <cctype>#include <algorithm>#define rr registerusing namespace...原创 2019-10-28 21:45:35 · 90 阅读 · 0 评论 -
#线段树,树状数组#CH 4302 Interval GCD
题目满足区间修改和区间求最大公因数分析根据更相减损法,gcd(x,y)=gcd(x,y−x)gcd(x,y)=gcd(x,y−x)gcd(x,y)=gcd(x,y-x),所以可以用一个差分序列b[i]=a[i]−a[i−1]b[i]=a[i]−a[i−1]b[i]=a[i]-a[i-1],区间修改变成单点修改,对于每个求最大公因数的操作,可以等价转化为gcd(a[l]+answ...原创 2018-08-22 08:41:01 · 210 阅读 · 0 评论 -
#树状数组,线段树,分块#poj 3468 A Simple Problem with Integers
题目需要满足两种操作,区间修改和区间查询分析(树状数组)设tree[i]=a[i]−a[i−1]tree[i]=a[i]−a[i−1]tree[i]=a[i]-a[i-1](差分),那么容易得到: tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]tree[1]+tree[2]+…+tree[i]=a[i]...原创 2018-08-21 12:27:40 · 146 阅读 · 0 评论 -
#线段树,树状数组#洛谷 4879 ycz的妹子
题目分析(线段树)首先,要维护区间颜值和以及区间妹子个数,其实最难的应该是删除,在找的时候运用区间妹子个数,但是好像非正解,因为应该容易被HACK掉代码(线段树)#include <cstdio>#include <cctype>#define rr registerusing namespace std;typedef long long ll;co...原创 2019-05-04 13:19:12 · 223 阅读 · 0 评论 -
#树状数组,莫比乌斯反演,整除分块#bzoj 3529 JZOJ 3623 洛谷 3312 数表
题目求∑i=1n∑j=1mσgcd(i,j)[σgcd(i,j)≤w]\sum_{i=1}^{n}\sum_{j=1}^m\sigma_{gcd(i,j)}[\sigma_{gcd(i,j)}\leq w]i=1∑nj=1∑mσgcd(i,j)[σgcd(i,j)≤w]多组数据分析先把后面条件扔掉,默认n≤mn\leq mn≤m∑i=1n∑j=1mσgcd(i,j)=∑d=1n...原创 2019-06-06 07:49:58 · 153 阅读 · 0 评论 -
#树状数组#BZOJ 4888 洛谷 3760 异或和
题目给定nnn个数,求它们所有区间的连续和的异或值分析一定要把异或拆开,可以得到答案是∑k=02k≤sn2k×((∑i=1n∑j=0i−1((s[i]−s[j])>>k) mod 2) mod 2)\sum_{k=0}...原创 2019-06-02 12:52:33 · 186 阅读 · 0 评论 -
#树状数组,离散#洛谷 3970 bzoj 5157 jzoj 3742 上升子序列
题目给定一段序列,问有多少段长度超过1并且互不相同的子序列严格递增分析首先长度超过1也就是总合法子序列减去互不相同的数,首先要把这个序列离散化,思考严格递增,也就是前面的数比它小的答案个数和,这个可以用树状数组实现,然后这个位置答案加1,那怎么去重,也就是减掉前面相同数的答案个数和,可以开一个桶记录代码#include <cstdio>#include <ccty...原创 2019-06-22 12:49:54 · 130 阅读 · 0 评论 -
#CDQ分治#洛谷 3810 bzoj 3262 陌上花开
题目原创 2019-07-07 21:41:57 · 128 阅读 · 0 评论 -
#树状数组#洛谷 4528 bzoj 1145 图腾
题目分析dp[1324]−dp[1243]−dp[1432]dp[1324]-dp[1243]-dp[1432]dp[1324]−dp[1243]−dp[1432]=(dp[1x2x]−dp[1423])−(dp[12xx]−dp[1234])−(dp[14xx]−dp[1423])=(dp[1x2x]-dp[1423])-(dp[12xx]-dp[1234])-(dp[14xx]-dp[1...原创 2019-08-06 10:05:26 · 116 阅读 · 0 评论 -
2019.08.12【NOIP提高组】模拟 A 组
解题报告JZOJ 6293 迷宫题目分析代码JZOJ 6297 猛汉王题目分析代码JZOJ 6299 工厂题目分析代码JZOJ 6293 迷宫题目分析因为其没有后效性动态dp,用线段树维护区间的最短路径,线段树维护一个dp方程,也就是该列的某行到某行的最短路径,那么区间判断最小值,注意特判代码#include <cstdio>#include <cctype...原创 2019-08-19 11:16:41 · 478 阅读 · 0 评论 -
2019.08.23【NOIP提高组】模拟 A 组
解题报告洛谷 1527 JZOJ 2908 矩阵乘法题目分析代码JZOJ 3410 Tree题目分析代码JZOJ 3682 CF429E Points and Segments题目分析代码洛谷 1527 JZOJ 2908 矩阵乘法题目给定一个矩阵,多组询问子矩阵的第kkk大,不带修改分析这是一道整体二分的好题,以矩阵的n2n^2n2为值域,用二维树状数组记录≤mid\leq mid≤...原创 2019-08-23 18:08:40 · 144 阅读 · 0 评论 -
#树状数组#洛谷 4514 上帝造题的七分钟
题目一开始初始为0的二维数组,需要维护区间加和区间查询分析首先要思考如何表示二维前缀和以差分实现s[x][y]=∑i=1n∑j=1n∑p=1i∑q=1ja[p][q]s[x][y]=\sum_{i=1}^n\sum_{j=1}^n\sum_{p=1}^i\sum_{q=1}^ja[p][q]s[x][y]=i=1∑nj=1∑np=1∑iq=1∑ja[p][q]s[x][y]=∑...原创 2019-10-05 10:27:07 · 184 阅读 · 0 评论 -
#树状数组#CH 4201 jzoj 2460 楼兰图腾
题目求三个纵坐标i,j,ki,j,ki,j,k可成为i&amp;lt;j&amp;gt;ki&amp;lt;j&amp;gt;kik或i&amp;gt;j&amp;lt;ki&amp;gt;j&amp;lt;ki&gt;jxxx的值代码#include &amp;lt;cstdio&amp;gt;t原创 2018-08-21 11:48:30 · 156 阅读 · 0 评论 -
#前缀和,树状数组#poj 3263 洛谷 2879 Tallest Cow
题目已知有若干头牛,且最高的牛为hhh,两头牛能互相看见当且仅当中间的牛矮于两头牛,可以知道某些互相看见的关系,问每头牛的最高身高是多少分析若现在为第xxx头牛和第yyy头牛能相互看见 首先特判的情况,x>y(交换)x>y(交换)x>y(交换)或xxx和yyy这种关系出现过(不需要进行(重复的可以用map库)) 之后那可以在x+1x+1x+1和y−1y−1y-1...原创 2018-08-14 14:46:19 · 177 阅读 · 0 评论 -
#树状数组#poj 3928 ping pong
题目对于1≤x<y<z≤n1≤x<y<z≤n1\leq xax>ay>az或ax<ay<azax>ay>az或ax<ay<aza_x>a_y>a_z或a_xai左右边的最小值和最大值ai左右边的最小值和最大值a_i左右边的最小值和最大值, left_min left_max right_m原创 2018-07-14 08:57:43 · 128 阅读 · 0 评论 -
#树状数组,线段树#洛谷 3374 【模(mú)板】树状数组 1
模板,我就不多说了。分析:为了优化时间,于是使用树状数组(长得很像数组的树)。代码:#include &lt;cstdio&gt;#include &lt;cctype&gt;using namespace std;int a[500001],n,m;int in(){ char c=getchar(); int ans=0,f=1; w原创 2018-02-24 12:54:10 · 540 阅读 · 0 评论 -
#树状数组,线段树#洛谷 3372 【模(mú)板】线段树 1
首先先讲树状数组的做法,别问我为什么!同3368一样用差分数组。使差分数组1到x的和为ans(x)。 建立一个新的树状数组ans1(x)=差分(x)*(x-1) 不过那也就是x——y的答案为 (y*ans(y)-(x-1)*ans1(x-1))-(ans(y)-ans1(x-1))树状数组代码#include &lt;cstdio&gt;#include &lt;c...原创 2018-03-02 23:29:43 · 371 阅读 · 0 评论 -
#树状数组#洛谷 3368 【模(mú)板】树状数组 2
线段树做法:详见 http://blog.csdn.net/sugar_free_mint/article/details/79364621树状数组:上面那个网址也说了,使用差分数组b[i]=a[i]-a[i-1]使b[1……i]=a[i],再用树状数组求出来。树状数组代码#include &lt;cstdio&gt;#include &lt;cct...原创 2018-03-02 23:30:20 · 451 阅读 · 0 评论 -
poj 3321 apple tree#树状数组#
题目求一个枝丫上有多少苹果。分析把树用后序遍历变成树状数组的形式,然后按照信息修改就好了。代码#include <cstdio>using namespace std;struct node{int x,y,next;}e[200000]; bool flag[100001],v[100001];int ls[100001],n,beg[10000...原创 2018-05-12 12:53:56 · 161 阅读 · 0 评论 -
#树状数组#洛谷 1972 JZOJ 1097 HH的项链
题目问区间中数的种类分析那么由于这道题没有修改,所以可以用树状数组离线回答,对于左区间排序,然后用树状数组统计代码#include <cstdio>#include <cctype>#include <algorithm>#define rr registerusing namespace std;struct rec{int l,r,r...原创 2019-03-09 12:45:30 · 109 阅读 · 0 评论 -
#树状数组#poj 2481 cows
题目求出每只牛的力量程度([Si, Ei] and [Sj, Ej].Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj)分析因为大的无极限,所以排序的思想可以知道首先对Ei进行排序,在相同的情况下按Si小到大排序,但是我们知道如果相同就要特判,then树状数组。代码#include <cstdio&g...原创 2018-05-11 20:40:08 · 158 阅读 · 0 评论 -
#树状数组#POJ 2352 star
题目首先,等级的规划:其它横坐标不大于当前横坐标且其它纵坐标不大于当前纵坐标的数量。 最后,求出0等星到n-1等星的数量分析可以使用树状数组,再用个桶,反正记得坐标+1就行了(不然会炸)。代码#include <cstdio>using namespace std;short c[32001],a[15001]; int n,x;int lo...原创 2018-05-11 20:01:43 · 130 阅读 · 0 评论 -
#树状数组#洛谷 5142 区间方差
洛谷 1471 方差(此题强化版)方差的题解题目满足单点修改和区间查询方差分析我的题解已经说的比较清楚了,只需要维护区间和以及区间平方和,由于数据比较水,所以说可以用树状数组维护,然后再用逆元求解代码#include <cstdio>#include <cctype>#define rr registerusing namespace std;t...原创 2019-01-25 17:06:52 · 331 阅读 · 0 评论 -
#树状数组#poj 2828 Buy Tickets
题目输入插队的人和插队的位置,求最终所有人的位置。分析树状数组,从后往前(倒推),然后就是要让在前面的次序-1。代码#include <cstdio>#include <cstring>using namespace std;int n,c[200001],a[200001],rec[200001];short b[200001];i...原创 2018-06-21 21:02:46 · 201 阅读 · 0 评论 -
2018_9_22 模拟赛
今日比赛目录前言:JZOJ 5771 遨游题目分析代码JZOJ 5772 今天你AK了吗?题目分析代码JZOJ 5773 简单数学题题目分析代码前言:渐入佳境233JZOJ 5771 遨游题目一个双向图,找出一对数[L,R],L≤R[L,R],L\leq R[L,R],L≤R,使双向图从起点到终点的边权在该区间范围内,且使LLL尽量大,RRR尽量小分析可以发现这是一道有关最大和最...原创 2018-09-22 15:55:48 · 238 阅读 · 0 评论 -
#二维树状数组#poj 2155 Matrix
题目在一个01矩阵内,选择某个子矩阵取反或输出某点的01值。分析可以用二维树状数组解决这个问题,void add(int x,int y,int z){ while (x<=n){ int y1=y; while (y1<=n){ c[x][y1]+=z; y1+=(y1&a...原创 2018-06-22 17:06:04 · 150 阅读 · 0 评论 -
#树状数组,二分#poj 2182 Lost Cows
题目排在奶牛前面的奶牛数量实际上比那头奶牛的品牌要小,求奶牛的排序。分析二分+树状数组,倒推,二分求出排列,用树状数组求品牌的数量。代码#include &lt;cstdio&gt;using namespace std;int n,a[8001],c[8001];void add(int x){while (x&lt;=n) c[x]++,x+=(x&amp...原创 2018-06-22 10:51:12 · 228 阅读 · 0 评论 -
#树状数组,高精度#poj 3378 Crazy Thairs
题目求长度为5的最长上升子序列个数分析可以用树状数组实现,然而改了几个月的原因,就是高精度,可以说,不算大,但爆了long long代码#include<cstdio>#include<algorithm>#include<cstring>#define rr registerusing namespace std;unsigned n;...原创 2018-10-07 13:11:01 · 387 阅读 · 0 评论 -
#树状数组#洛谷 2068 统计和
树状数组の初见#include &lt;cstdio&gt;using namespace std;int a[100001],n,m;int lowbit(int x){ return x&amp;(-x);}void add(int l,int r){ while (l&lt;=n){ a[l]+=r; l+=lowbit(l)...原创 2018-02-21 21:32:18 · 157 阅读 · 0 评论