Mango DS Traning #49 ---线段树3 解题手记
2013-12-26 19:22
337 查看
Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38994#overview
B.Xenia and Bit Operations ----Codeforces 339D
线段树大水题。。每个节点维护一个flag,flag=1表示此时应与其兄弟节点做或(|)操作,flag=2表示做异或(^)操作,然后pushup...
代码:
View Code
B.Xenia and Bit Operations ----Codeforces 339D
线段树大水题。。每个节点维护一个flag,flag=1表示此时应与其兄弟节点做或(|)操作,flag=2表示做异或(^)操作,然后pushup...
代码:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 200010 int cap ,jp ,a ; int main() { int n,m; int i,j; int op,pos,val; int st; while(scanf("%d",&n)!=EOF) { memset(cap,0,sizeof(cap)); for(i=1;i<=n;i++) { scanf("%d",&a[i]); jp[i] = i; } scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&op); if(op == 1) { scanf("%d%d",&pos,&val); st = jp[pos]; while(cap[st]+val>=a[st]&&st<=n) { val -= (a[st]-cap[st]); cap[st] = a[st]; st++; } if(st<=n) cap[st] += val; for(j=jp[pos];j<st;j++) { jp[j] = st; } jp[pos] = st; } else { scanf("%d",&pos); printf("%d\n",cap[pos]); } } } return 0; }
View Code
相关文章推荐
- Mango DS Training #48 ---线段树2 解题手记
- Mango DS Training #48 ---线段树2 解题手记
- Mango DS Traning #49 ---线段树3 解题手记
- poj 3468 A Simple Problem with Integers 解题报告 线段树 数状数组两种实现
- HDU 1166 线段树 解题报告
- HDU 5209 Relief grain 解题报告(树链剖分 + 线段树)
- 解题报告:线段树的查询
- HDU 1754 解题报告 线段树 单点更新
- XTU1238Segment Tree(线段树)解题思想必较经典
- HDU1698关于线段树的解题报告和代码
- 线段树 解题
- AcDream 1415 Important Roads 解题报告(最短路 + 线段树)
- POJ 4047 Garden (线段树 - 区间增减、区间查询) -- 解题报告
- LintCode 解题记录17.5.10(tag:线段树)
- codevs 1191 线段树 解题报告
- 线段树和单调队列优化DP---POJ2373解题报告
- 团体程序设计天梯赛-练习集 L3-002. 堆栈 线段树 单点更新 解题报告
- CodeVS1369 xth 砍树 解题报告【数据结构】【线段树/树状数组】
- 二维线段树解析 (HDU1823)解题报告
- 线段树 查询删除 后序遍历 POJ2182 Lost Cows解题报告