博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【树状数组区间修改单点查询+分组】HDU 4267 A Simple Problem with Integers
阅读量:5246 次
发布时间:2019-06-14

本文共 1827 字,大约阅读时间需要 6 分钟。

【思路】

  • 树状数组的区间修改:在区间[a, b]内更新+x就在a的位置+x. 然后在b+1的位置-x
  • 树状数组的单点查询:求某点a的值就是求数组中1~a的和.

  • (i-a)%k==0把区间分隔开了,不能直接套用树状数组的区间修改单点查询
  • 这道题的K很小,所以可以枚举k,对于每个k,建立k个树状数组,所以一共建立55棵树
  • 所以就可以多建几棵树..然后就可以转换为成段更新了~~

【AC】

1 #include
2 using namespace std; 3 typedef long long ll; 4 int n; 5 const int maxn=5e4+2; 6 int tree[12][12][maxn]; 7 int a[maxn]; 8 int lowbit(int x) 9 {10 return x&(-x);11 }12 void add(int k,int x,int pos,int val)13 {14 while(pos<=n)15 {16 tree[k][x][pos]+=val;17 pos+=lowbit(pos);18 }19 }20 21 int query(int k,int x,int pos)22 {23 int res=0;24 while(pos)25 {26 res+=tree[k][x][pos];27 pos-=lowbit(pos);28 }29 return res;30 }31 int main()32 {33 while(~scanf("%d",&n))34 {35 memset(tree,0,sizeof(tree));36 for(int i=1;i<=n;i++)37 {38 scanf("%d",&a[i]);39 }40 int q;41 scanf("%d",&q);42 while(q--)43 {44 int tp;45 scanf("%d",&tp);46 if(tp==1)47 {48 int x,y,k,c;49 scanf("%d%d%d%d",&x,&y,&k,&c);50 int st=x/k;51 if(x%k) st++;52 int ed=st+(y-x)/k; 53 add(k,x%k,st,c);54 add(k,x%k,ed+1,-c);55 }56 else57 {58 int x;59 scanf("%d",&x);60 int ans=a[x];61 int pos;62 for(int i=1;i<=10;i++)63 {64 pos=x/i;65 if(x%i) pos++;66 ans+=query(i,x%i,pos);67 }68 printf("%d\n",ans);69 }70 } 71 }72 return 0;73 }
树状数组

 

转载于:https://www.cnblogs.com/itcsl/p/7435912.html

你可能感兴趣的文章
mysql新建用户,用户授权,删除用户,修改密码
查看>>
实验五 TCP传输及加密
查看>>
【iOS】build diff: /../Podfile.lock: No such file or directory
查看>>
【Android Studio】使用 Genymotion 调试出现错误 INSTALL_FAILED_CPU_ABI_INCOMPATI
查看>>
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>
C++中explicit的用法
查看>>
java 企业站源码 兼容手机平板PC 响应式 主流SSM框架 freemaker 静态引擎
查看>>
JS博客
查看>>
Docx转Doc操作(c#)
查看>>
一条简单的 SQL 执行超过 1000ms,纳尼?
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
Google Guava学习笔记——简介
查看>>
历时八年,HTML5 标准终于完工了
查看>>
17.树的子结构
查看>>
D - Mike and strings
查看>>