随笔分类 - 树状数组
摘要:D. Pashmak and Parmida's problemtime limit per test3 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputParmida is a cle...
阅读全文
摘要:http://codeforces.com/contest/220/problem/B题意:给出一个数组,给出m组询问,问区间中出现a[i] 次的有多少个。sl: 很显然的离线问题了。 大视野菜花的加强版。可以这么搞,假设当前走到了a 看看之前是不是有a个a有的话就在a-k处 减1 同时补上上次的操...
阅读全文
摘要:1voidRMQ_Init(constvector&A)2{3intn=A.size();4for(inti=0;i<n;i++)d[i][0]=A[i];5for(intj=1;(1<<j)<=n;j++)6for(inti=0;i+(1<<j)-1<n;i++)7d[i][j]=min(d[i]...
阅读全文
摘要:题意:给定三个操作添加删除查询大于a的的第k大值----树状数组的逆向操作给定a利用BIT查询有多少值比a小,这样比a大的k大值就应该有k+sum(a)个小于他的值因此可以二分枚举k大值看看是不是满足条件。这里有一点需要注意,就是二分出答案时当前答案的的数量一定大于1因为这个wa了一次详见代码:1#include2#include3#include4usingnamespacestd;5constintMAX=100000+10;6constintinf=0x3f3f3f3f;7intc[MAX],n,use[MAX];8intlowbit(intx)9{10returnx&(-x);
阅读全文
摘要:题意:给定一个矩阵有查询有添加操作。hit :很明显是二维树状数组(第一道二维fenwick哈) 横向纵向维护两个树状数组所以是二维,详见代码1//二维树状数组2#include3#include4#include5usingnamespacestd;6constintMAX=1024+10;7intc[MAX][MAX];8intn;9intlowbit(intx)10{11returnx&(-x);12}13voidadd(intx,inty,intd)14{15for(inti=x;i=1;i-=lowbit(i))27{28for(intj=y;j>=1;j-=lowbi
阅读全文
摘要:树状数组简单题(第一道树状数组哈)唯一有点意思的是这道题目需要离散化。详见代码题意: 求一组数的逆序数1//离散化+树状数组2#include3#include4#include5usingnamespacestd;6constintMAX=500000+10;7structnode8{9intval,pos;10}v[MAX];11intnum[MAX],n,c[MAX];12intcmp(nodea,nodeb)13{14returna.val0)32{33ans+=c[x];34x-=lowbit(x);35}36returnans;37}38intmain()39{40longlong
阅读全文