HDU-1166-敌兵布阵
来源:互联网 发布:c语言1到100的奇数和 编辑:程序博客网 时间:2024/05/29 15:22
ACM模版
描述
题解
结点更新,区间求和,基础线段树。
代码
#include <iostream>#include <string>using namespace std;const int MAXN = 50000;string str;int sum; // 记录总兵数int num[MAXN + 1] = {0}; // 记录各个兵营的兵数typedef struct node{ int left; int right; int data; node *lchild; node *rchild; node() { left = right = data = 0; }} Tree;Tree *CreateTree(int a, int b){ Tree *r; r = (Tree *)malloc(sizeof(Tree)); r->left = a; r->right = b; if (a == b) { r->data = num[a]; r->lchild = r->rchild = NULL; } else { int mid = (a + b) >> 1; r->lchild = CreateTree(a, mid); r->rchild = CreateTree(mid + 1, b); r->data = r->lchild->data + r->rchild->data; } return r;}void update(Tree *r, int a, int b){ if (r->left == a && r->right == a) { r->data += b; return; } int mid = (r->left + r->right) >> 1; if (a <= mid) { update(r->lchild, a, b); } else { update(r->rchild, a, b); } r->data += b;}void find(Tree* r, int a, int b){ if (r->left == a && r->right == b) { sum += r->data; return ; } int mid = (r->left + r->right)>>1; if (b <= mid) { find(r->lchild, a, b); } else if (a > mid) { find(r->rchild, a, b); } else { find(r->lchild, a, mid); find(r->rchild, mid + 1, b); }}int main(){ int T; scanf("%d",&T); int n, x, y; int key = 0; while (T--) { printf("Case %d:\n", ++key); scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &num[i]); } Tree *T; T = CreateTree(1, n); while (cin >> str) { if (str == "Query") { sum = 0; scanf("%d%d", &x, &y); find(T, x, y); printf("%d\n", sum); } else if (str == "Add") { scanf("%d%d", &x, &y); update(T, x, y); } else if (str == "Sub") { scanf("%d%d", &x, &y); update(T, x, -y); } else { break; } } } return 0;}
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 敌兵布阵
- 位运算符--Java基础013
- 函数指针实现接口固化
- 上一篇博客的补充
- 需求获取中的注意事项
- HDU1059 Dividing(多重背包,二进制优化,模板题)
- HDU-1166-敌兵布阵
- golang中的模板template
- HTTP状态码
- RESTful最佳实践——二、REST是什么?
- (M)SIM卡开机流程分析之主线分析
- 解释器模式(行为型)
- 立体匹配总结话
- java中会存在内存泄漏吗
- centos安装python2.7