HDU-1166 敌兵布阵
来源:互联网 发布:视频特效软件有哪些 编辑:程序博客网 时间:2024/06/03 02:26
题目链接:https://vjudge.net/problem/HDU-1166
线段树模板题
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<map>#include<set>#include<string>#include<stack>using namespace std;typedef long long ll;#define maxn 50000struct node{ int l, r, sum; int mid(){ return (l+r)/2; }};node Tree[maxn*4];int value[maxn+10];int flag;//初始化树,根节点是1void init_tree(int root, int l, int r){ Tree[root].l = l; Tree[root].r = r; if(l == r) Tree[root].sum = value[l]; else{ init_tree(2*root, l, (l+r)/2); init_tree(2*root+1, (l+r)/2 + 1, r); Tree[root].sum = Tree[2*root].sum + Tree[2*root+1].sum; }}//查找和int query_tree(int root, int l, int r){ int m = Tree[root].mid(); if(l == Tree[root].l && r == Tree[root].r) return Tree[root].sum; else{ if(l > m) return query_tree(2*root+1, l, r); else if(r <= m) return query_tree(2*root, l, r); else return query_tree(2*root, l, m) + query_tree(2*root+1, m+1, r); }}void update_tree(int root, int idx, int v){ if(Tree[root].l == Tree[root].r) Tree[root].sum += flag*v; else{ Tree[root].sum += flag*v; if(idx <= Tree[root].mid()) update_tree(2*root, idx, v); else update_tree(2*root+1, idx, v); }}int n;int main(){ //freopen("/home/zlwang/Desktop/t2.txt","r",stdin); int T,kase=0; scanf("%d",&T); while(T--) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&value[i]); init_tree(1,0,n-1); printf("Case %d:\n",++kase); char s[5]; int a,b; while(~scanf("%s",s)) { if(s[0]=='E') break; scanf("%d%d",&a,&b); if(s[0]=='Q') { printf("%d\n",query_tree(1,a-1,b-1)); } else if(s[0]=='A') { flag=1; update_tree(1,a-1,b); } else if(s[0]=='S') { flag=-1; update_tree(1,a-1,b); } } } 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 敌兵布阵
- No 'Access-Control-Allow-Origin' header is present on the requested resource.一种解决思路
- MySQL数据库远程访问权限如何打开(两种方法)
- JVM无法分配问题(系统性能参数调优)
- 1.4 报文
- 服务机器人附加价值的最大化
- HDU-1166 敌兵布阵
- redis cluster环境下jedis expireAt命令bug探究
- 聊聊从平面设计师转为UI设计师的经历
- Spring基本原理和应用
- 通过pyChram克隆Github中的项目
- Android 横竖屏切换 导致崩溃
- [Leetcode] 410. Split Array Largest Sum 解题报告
- 就终于跑通了Hibernate连接数据库发表感想
- 牛顿法求最优值与Hessian矩阵