hdu1166 敌兵布阵 一维树状数组
2017-10-18 21:20
363 查看
Problem:
给了n个数,有三个操作,增加某个值,减少某个值,求某段区间的和。
Solution:
利用线段树或者树状数组都可以,快速求区间和。
notes:
输入输出不加速会超时。
给了n个数,有三个操作,增加某个值,减少某个值,求某段区间的和。
Solution:
利用线段树或者树状数组都可以,快速求区间和。
notes:
输入输出不加速会超时。
#include<cstdio> #include<iostream> #include<sstream> #include<cstdlib> #include<cmath> #include<cctype> #include<string> #include<cstring> #include<algorithm> #include<stack> #include<queue> #include<set> #include<map> #include<ctime> #include<vector> #include<fstream> #include<list> #include <iomanip> using namespace std; typedef long long ll; typedef unsigned long long ull; #define ms(s) memset(s,0,sizeof(s)) const double PI = 3.141592653589; const int INF = 0x3fffffff; long long c[100010]; int n; inline int lowbit(int x) { return x & -x; } void update(int idx, int v) { while (idx <= n) { c[idx] += v; idx += lowbit(idx); } } long long query(int x) {// The sum of 1 to x long long ans = 0; while(x > 0) { ans += c[x]; x -= lowbit(x); } return ans; } int main() { // freopen("/Users/really/Documents/code/input","r",stdin); // freopen("/Users/really/Documents/code/output","w",stdout); ios_base::sync_with_stdio(false); cin.tie(0); int t; cin >> t; for(int k = 1; k <= t; k++) { ms(c); cout << "Case " << k << ":\n"; cin >> n; int a; for(int i = 1; i <= n; i++) { cin >> a; update(i, a); } string s; int l, r; while(cin >> s) { if(s == "End") break; else if(s == "Query") { cin >> l >> r; cout << query(r) - query(l-1) << '\n'; } else if(s == "Add") { cin >> l >> r; update(l, r); } else if(s == "Sub") { cin >> l >> r; update(l, -r); } } } return 0; }
相关文章推荐
- 【原创】【数据结构】一维树状数组的基本操作(单点修改,区间查询) (HDU1166 敌兵布阵)
- hdu1166敌兵布阵(大意)树状数组
- HDU1166 敌兵布阵 (树状数组->改点求段)
- HDU1166 敌兵布阵 线段树||树状数组||CDQ分治 入门题复习
- (树状数组)hdu1166 敌兵布阵
- ACM-树状数组之敌兵布阵——hdu1166
- hdu1166 敌兵布阵 (树状数组)
- HDU1166 敌兵布阵 树状数组 水题
- hdu1166 敌兵布阵(树状数组)
- hdu1166 敌兵布阵(树状数组基本操作)
- HDOJ 1166 敌兵布阵(一维树状数组)
- HDU 1166 敌兵布阵 一维树状数组
- Hdu1166 敌兵布阵 [分块][树状数组][线段树]
- HDU1166- 敌兵布阵(线段树&树状数组)
- Hdu1166 step5.3.2敌兵布阵(简单的树状数组)
- hdu1166敌兵布阵(树状数组模板题)
- hdu1166 敌兵布阵(树状数组 && 线段树单点更新)
- HDU1166 敌兵布阵【树状数组 OR 线段树】
- 树状数组的基本+运用(HDU1166-敌兵布阵)
- 【HDU1166敌兵布阵](树状数组)