HDU 1166 敌兵布阵 树状数组-(模板)
来源:互联网 发布:linux查看cpu核数命令 编辑:程序博客网 时间:2024/06/05 14:55
这道题是很简单的树状数组和线段树的题目,理解一下树状数组怎么用~
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;int n,num[50050];int lowbit(int t) { return t & (-t);}void add(int t,int number) { while(t <= n) { num[t] += number; t += lowbit(t); }}int getsum(int t) { int sum = 0; while(t > 0) { sum += num[t]; t -= lowbit(t); } return sum;}int main() { int t,cnt = 1; scanf("%d",&t); while(t--) { printf("Case %d:\n",cnt++); scanf("%d",&n); int x,a,b; for(int i = 1;i <= n;i++) { scanf("%d",&x); add(i,x); } char str[20]; while(scanf("%s",str) && str[0] != 'E') { scanf("%d%d",&a,&b); if(str[0] == 'A') add(a,b); else if(str[0] == 'S') add(a,-b); else printf("%d\n",getsum(b) - getsum(a-1)); //这里注意减去后面的前缀和是a-1!
} }}
主要就是利用了lowbit的性质,写起来比线段树方便写~~
0 0
- HDU 1166 敌兵布阵(树状数组模板)
- HDU 1166 敌兵布阵 树状数组模板
- HDU 1166 敌兵布阵 树状数组-(模板)
- hdu - 1166 - 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵 (树状数组)
- HDU 1166 - 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵 ( 树状数组 )
- HDU 1166 敌兵布阵(树状数组)
- hdu-1166敌兵布阵(树状数组)
- HDU 1166 敌兵布阵 (树状数组)
- hdu-1166 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵(树状数组)
- HDU 1166 敌兵布阵 (树状数组)
- HDU 1166 敌兵布阵(树状数组)
- hdu 1166 敌兵布阵(树状数组)
- xUtils源码阅读(8)-ImageDecoder
- Spring 源码梳理(八) Spring常用配置
- 一、logo载入界面
- HTML character codes
- JSP页面用EL表达式 输出date格式
- HDU 1166 敌兵布阵 树状数组-(模板)
- Swift语言2.2版本,够初学者学习
- Android 广告(banner)图片轮播、图片浏览、仿微信大图查看控件(支持视频和gif图片)、支持动态添加数据
- Android 之下拉刷新控件XRefreshableView
- 初学Spring框架,测试时出现的小问题
- JNI编程中如何传递参数和返回值。
- Sgu 101 欧拉通路
- remdmine一键安装手册
- 数据结构实验之链表八:Farey序列