ACM线段树。第兵布阵
来源:互联网 发布:mac 桌面文件太多 编辑:程序博客网 时间:2024/05/18 19:21
#include <iostream>#include <string.h>#include<stdio.h>using namespace std;#define max 50001struct node{int l, r, sum;}a[200000];void set(int l, int r, int i){a[i].l = l;a[i].r = r;a[i].sum = 0;if (l == r){scanf("%d", &a[i].sum);return;//建立中录入数据}else{set(l, (l + r) / 2, i * 2);set((l + r) / 2 + 1, r, i * 2 + 1);a[i].sum = a[i * 2].sum + a[i * 2 + 1].sum;}}//建立void add(int x, int y, int i){if (a[i].l == a[i].r){a[i].sum += y;return;}int mid = (a[i].l + a[i].r) / 2;if (mid >= x)add(x, y, i * 2);else if (mid < x)add(x, y, 2 * i + 1);a[i].sum = a[i * 2].sum + a[i * 2 + 1].sum;}//加减运算int find(int l, int r, int i){if (a[i].l == l&&a[i].r == r){return a[i].sum;}int mid = (a[i].l + a[i].r) / 2;if (r <= mid){return find(l, r, i * 2);}else{if (l > mid){return find(l, r, i * 2 + 1);}else{return find(l, mid, i * 2) + find(mid + 1, r, i * 2 + 1);}}}//查询int main(){int t;scanf("%d", &t);for (int q = 1; q <= t; q++){printf("Case %d:\n", q);int n;scanf("%d", &n);set(1, n, 1);char str[10];int x, y;while (1){scanf("%s", str);if (str[0] == 'E')break;if (str[0] == 'S'){scanf("%d %d", &x, &y);add(x, -y, 1);//加负为减}else{if (str[0] == 'A'){scanf("%d %d", &x, &y);add(x, y, 1);}else{if (str[0] == 'Q'){scanf("%d %d", &x, &y);printf("%d\n", find(x, y, 1));}}}}}return 0;}
0 0
- ACM线段树。第兵布阵
- 排兵布阵&&线段树
- 排兵布阵 线段树
- [ACM] hdu 1166 敌兵布阵 (线段树,单点更新)
- 杭电 HDU ACM 1166 敌兵布阵(线段树)
- 杭电acm 1166敌兵布阵(线段树)
- [HDOJ] problem_1166 【敌兵布阵】 第一道线段树 纪念一下
- 线段树:敌兵布阵
- 线段树 敌军布阵
- 敌兵布阵(线段树)
- 线段树 敌兵布阵
- 【线段树】敌兵布阵
- 线段树 敌兵布阵
- 敌兵布阵(线段树)
- 敌兵布阵 线段树
- 敌兵布阵(线段树)
- 敌兵布阵-线段树
- 经典线段树敌兵布阵
- spring整合quartz框架定时任务实战
- OpenFace库(Tadas Baltrusaitis)中基于HOG进行正脸人脸检测的测试代码
- MSQL 相关知识
- volley网络请求框架+CheckBox实现全选及单选
- Tomcat配置JNDI资源(Tomcat配置连接池)
- ACM线段树。第兵布阵
- 【OpenCV3】级联分类器目标检测——cv::CascadeClassifier简介
- 学习记录 复杂网络MATLAB工具箱
- 位操作的原理
- Git 学习-第一节:基础和原理
- C++ 虚函数&纯虚函数&抽象类&接口&虚基类
- Spring整合定时任务调度框架Quartz实
- 项目维护过程中可能用到的sql积累
- 勉強する