【jzoj4711】【Binary】【树状数组】
来源:互联网 发布:参不敏 何足以知之 编辑:程序博客网 时间:2024/06/11 13:19
题目大意
解题思路
每一位分别考虑,没有加操作时直接开个计数器查找就可以了。有了加操作,我们要考虑加对二进制的影响。一位一位考虑,保存当前位及以下的状态,存到数据结构里,y是1才有可能有贡献。不进位时2^(i-1)<=ai+x<=2^i-1。进位时2^i+2^(i-1)<=ai+x<=2^(i+1)-1。
code
#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)using namespace std;int const maxn=100000,maxa=1<<21,inf=2147483647;int n,q,a[maxn+10],cnt[20+10],t[21][maxa+10];void add(int p,int v,int w){ v++; for(;v<=maxa;){ t[p][v]+=w; v+=v&(-v); }}int qury(int p,int v){ int ans=0;v++; for(;v>=1;){ ans+=t[p][v]; v-=v&(-v); } return ans;}int main(){ freopen("d.in","r",stdin); freopen("d.out","w",stdout); scanf("%d%d",&n,&q); fo(i,1,n)scanf("%d",&a[i]); fo(i,1,n) fo(j,1,20) add(j,a[i]%(1<<j),1); fo(i,1,q){ int opt,x,y;scanf("%d%d%d",&opt,&x,&y); if(opt==1){ fo(j,1,20) add(j,a[x]%(1<<j),-1); a[x]=y; fo(j,1,20) add(j,a[x]%(1<<j),1); } else{ LL ans=0;int tmp=1; fo(j,1,20){ if(y&1)ans+=1ll*(qury(j,(1<<j)-1-x%(1<<j))-qury(j,(1<<(j-1))-x%(1<<j)-1)+qury(j,(1<<(j+1))-1-x%(1<<j))-qury(j,(1<<j)+(1<<(j-1))-x%(1<<j)-1))*tmp; tmp=tmp*2; y/=2; } printf("%lld\n",ans); } } return 0;}
0 0
- 【jzoj4711】【Binary】【树状数组】
- JZOJ4711. Binary
- [JZOJ4711] Binary
- 【JZOJ4711】Binary
- Jzoj4711 Binary
- 树状数组(Binary Indexed Tree)
- 树状数组(Binary Indexed Tree)
- 树状数组(Binary Indexed Tree)
- 树状数组(Binary Indexed Trees)
- 树状数组(Binary Indexed Trees)
- Binary indexed tree(树状数组)
- 树状数组 Binary Indexed Trees
- 1080 - Binary Simulation[树状数组]
- 树状数组(Binary Indexed Tree)
- 树状数组 Binary Indexed Tree
- 树状数组(binary indexed tree)
- 树状数组 Binary Indexed Tree
- 树状数组(Binary Indexed Trees)树状数组详解(转载)
- warning: non-variable type argument Any in type pattern scala.collection.immutable.Set[Any] (the und
- MongoDB高级查询(二)
- 高中纪中OJ3078. 【备战NOIP2012图论专项模拟试题】无线通讯网
- 生产者消费者问题(多线程完整版)
- 【zzulioj 1919 二分】
- 【jzoj4711】【Binary】【树状数组】
- 易语言 精益/VIP精益模中的普通填表与网页填表的使用
- 链表中环的入口结点
- 【概念笔记】字节型输入输出流
- 算术表达式的语法分析及语义分析程序设计 —— LR分析法、输出三元式
- Django(2)——运用数据库为你的网页添加翻页功能
- poj2385 Apple Catching
- 关于在APIStore中获取数据
- ZZULI-oj-1919(二分)