一道線段樹和樹狀陣列的基礎題
用樹狀陣列做:
#includeusing namespace std;
#define n 50010
int size,c[n];
int lowbit(int x)
void modify(int i,int x)
}int sum(int i)
return ans;
}int main()
printf("case %d:\n",total++);
while(scanf("%s",str)&&str[0] != 'e')
}} return 0;
}
用線段樹做:
#includeusing namespace std;
#define n 50010
struct node
tree[n*4];
int num[n];
void build(int l,int r,int i)
int mid = (l+r)>>1;
build(l,mid,i*2);
build(mid+1,r,i*2+1);
tree[i].sum = tree[i*2].sum + tree[i*2+1].sum;
}void modify(int l,int r,int v,int i)
int mid = (tree[i].left + tree[i].right)>>1;
if(r <= mid)
modify(l,r,v,i*2);
else if(l > mid)
modify(l,r,v,i*2+1);
else
tree[i].sum = tree[i*2].sum + tree[i*2+1].sum;
}int query(int l,int r,int i)
int main()
} }return 0;
}
hdu 1166 線段樹 樹狀陣列
剛剛做完4351的線段樹 想起當初入門的線段樹水題 於是迅速乾掉!裸裸的超標準單點更新線段樹格式 剛剛看了樹狀陣列 用來再次刷了一次這道題 下面 2012.9.24 include include include const int maxx 50000 using namespace std in...
HDU1166 敵兵布陣 樹狀陣列 線段樹
題目鏈結 題意就不再多囉嗦了,這道題目是樹狀陣列模板題目,也是我的第乙個樹狀陣列題目。就說一下一開始我的錯誤之處,我是直接輸入a i 的,而不是通過add 生成a i 所以在後期求和的時候總是求不對。正確的做法應該是通過add i,val 生成a i 這個,在管理第i的節點的以後的節點都會加上val...
樹狀陣列 HDU1166
繼續上次那題,我們現在採用樹狀陣列來解。樹狀陣列主要用來進行區間求和統計和定點更新操作,樹狀陣列的儲存是如下方式的 假設陣列a為a 1 a 2 a 3 a n 現在我們另陣列c 1 a 1 c 2 a 1 a 2 c 3 a 3 c 4 a 1 a 2 a 3 a 4 這是啥結構呢?其實c i a ...