HDOJ-1166 敌兵布阵
来源:互联网 发布:御彩轩时时彩计划软件 编辑:程序博客网 时间:2024/06/06 09:50
这道题数据量很大,用朴素的方法做每个操作的时间复杂度为o(n)会超时,如果用线段树则每个操作为o(logn).
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <vector>#include <climits>#include <set>using namespace std;#define maxn 50005struct node{ int l, r, s;}T[maxn*3];int p[maxn];int Build(int n, int l, int r){ T[n].l = l; T[n].r = r; if(l == r){ return T[n].s = p[l]; } int mid = (l + r) / 2; return T[n].s = Build(n<<1, l, mid) + Build(n<<1|1, mid+1, r);}void Update(int n, int m, int k){ if(T[n].l == T[n].r){ T[n].s = k; return ; } int mid = (T[n].l + T[n].r) / 2; if(m <= mid) Update(n<<1, m, k); else Update(n<<1|1, m, k); T[n].s = T[n<<1].s + T[n<<1|1].s;}void Query(int n, int l, int r, int &sum){ if(T[n].l == l && T[n].r == r){ sum += T[n].s; return ; } int mid = (T[n].l + T[n].r) / 2; if(r <= mid) Query(n<<1, l, r, sum); else if(l > mid) Query(n<<1|1, l, r, sum); else { Query(n<<1, l, mid, sum); Query(n<<1|1, mid+1, r, sum); }}int main(){ // freopen("in.txt", "r", stdin); int t, cas = 0; cin >> t; while(t--) { printf("Case %d:\n", ++cas); string s; int n, a, b; cin >> n; for(int i = 1; i <= n; i++) scanf("%d", p+i); Build(1, 1, n); while(cin >> s && s[0] != 'E') { if(s[0] == 'Q') { int sum = 0; cin >> a >> b; Query(1, a, b, sum); cout << sum << endl; } else if(s[0] == 'A') { cin >> a >> b; p[a] += b; Update(1, a, p[a]); } else if(s[0] == 'S') { cin >> a >> b; p[a] -= b; Update(1, a, p[a]); } } } return 0;}
0 0
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 - 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 ---敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- HDOJ 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ-1166 敌兵布阵
- hdoj 1166 敌兵布阵
- hdoj 1166 敌兵布阵
- HDOJ 1166-敌兵布阵
- HDU/HDOJ----1166 敌兵布阵
- hdu/hdoj 1166 敌兵布阵
- java中的日期处理类总结
- android VPN路由配置过程分析
- MySQL数据库导入导出方法
- IOS中对Url进行编码和解码
- jQuery之动画效果
- HDOJ-1166 敌兵布阵
- 解决Clonezilla 跨机器备份还原磁盘时的引导时效
- mysql 大量数据插入(可用于数据添加字段不能添加的情况,因为会copy临时表。这样可以手动分批处理)
- Mutt发送邮件
- IOS 获取设备机型 系统版本 应用版本
- Eclipse快捷键 10个最有用的快捷键
- Android6.0的phone应用源码分析(8)——来电(MT)
- Windows平台下NS2网络仿真环境的搭建
- CSS盒模型