UVa 12532 - Interval Product
来源:互联网 发布:淘宝手办预定逃单 编辑:程序博客网 时间:2024/05/22 10:28
題目:已知N各數字X1~Xn,執行兩種操作:1、改變Xi為A;2、求區間[L,R]上元素乘積的符號。
分析:DS,線段樹。利用線段樹處理即可,每個數字正的取1,負的取-1,否則取0。
說明:╮(╯▽╰)╭。
#include <cstdlib>#include <cstring>#include <cstdio>int data[100001];//segment_tree__begintypedef struct tnode{tnode* Lchild;tnode* Rchild;int Lvalue;int Rvalue;int Value;}tnode;tnode Node[200002];tnode* Root;int Count;tnode* buildtree(int a, int b) {tnode* np = &Node[Count ++];np->Lvalue = a;np->Rvalue = b;np->Value = 0;if (a < b) {np->Lchild = buildtree(a, (a+b)/2);np->Rchild = buildtree((a+b)/2+1, b);}else {np->Lchild = NULL;np->Rchild = NULL;}return np;} void segment_tree(int a, int b){Count = 0;Root = buildtree(a, b);}void Insert(tnode*r, int a, int b, int v) {if (r->Lvalue == a && r->Rvalue == b) {r->Value = v;return;}if (b <= r->Lchild->Rvalue) {Insert(r->Lchild, a, b, v);}else if (a >= r->Rchild->Lvalue) {Insert(r->Rchild, a, b, v);}r->Value = r->Lchild->Value * r->Rchild->Value;}int Query(tnode* r, int a, int b) {if (r->Lvalue == a && r->Rvalue == b) {return r->Value;}else if (b <= r->Lchild->Rvalue) {return Query(r->Lchild, a, b);}else if (a >= r->Rchild->Lvalue) {return Query(r->Rchild, a, b);}else {return Query(r->Lchild, a, r->Lchild->Rvalue) * Query(r->Rchild, r->Rchild->Lvalue, b);}}void Insert(int a, int b, int v) {Insert(Root, a, b ,v);}int Query(int a, int b) {return Query(Root, a, b);}//segment_tree__end int main(){int N, K, value1, value2, ans;char operators[2];while (~scanf("%d%d",&N,&K)) {for (int i = 1; i <= N; ++ i) {scanf("%d",&data[i]);}segment_tree(1, N);for (int i = 1; i <= N; ++ i) {if (data[i] > 0) {Insert(i, i, 1);}else if (data[i] < 0) {Insert(i, i, -1);}else {Insert(i, i, 0);}}for (int i = 1; i <= K; ++ i) {scanf("%s%d%d",operators,&value1,&value2);if (operators[0] == 'C') {if (value2 > 0) {Insert(value1, value1, 1);}else if (value2 < 0) {Insert(value1, value1, -1);}else {Insert(value1, value1, 0);}}else {ans = Query(value1, value2);if (ans > 0) {printf("+");}else if (ans < 0) {printf("-");}else {printf("0");}}}puts("");}return 0;}
0 0
- UVA - 12532 Interval Product
- UVA 12532 Interval Product
- UVA - 12532 Interval Product
- UVA - 12532 Interval Product
- UVa 12532 - Interval Product
- UVa Online Judge 12532 - Interval Product
- UVa12532 - Interval Product(Fenwick树)
- UVa12532 - Interval Product(线段树)
- UVA12532 Interval Product(线段树)
- uva Product
- UVALive 6139 Interval Product(树状数组)
- UVa 10106 Product
- UVa OJ 10106-Product
- Uva 10106 Product
- uva 10106 Product
- UVa 10106 - Product
- uva-10106 - Product
- UVA 10106 Product
- php curl 中的gzip压缩性能测试
- 【win32】day02-字符与编码
- Lvs之NAT、DR、TUN三种模式的应用配置案例
- 移动web全局公共的css样式
- 浅析Android Camera开发中的三个尺寸和三种变形 (贡献一个自适配Picturesize和Previewsize的工具类)
- UVa 12532 - Interval Product
- 认识CoreData—高级用法
- 【第一章:dojo 】2)创建对象
- 英文字体(for banner)
- iOS修改状态栏颜色
- 快速幂,大数处理,递归优化
- 【模式识别 笔记01】贝叶斯决策论
- iOS9.0新增网络请求NSURLSession
- 高速缓存cache