【BZOJ3211】【并查集+树状数组】花神游历各国
2015-03-08 19:29
337 查看
Description
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <vector> #include <utility> #include <iomanip> #include <string> #include <cmath> #include <queue> #include <map> const int MAXN = 100000 + 10; const int MAX = 30000 + 10; using namespace std; typedef long long ll; int n; ll C[MAXN]; int data[MAXN], parent[MAXN]; int SQRT(int x){return (int)floor(sqrt((double)x * 1.0));} int lowbit(int x){return x & -x;} void add(int x, int val){ while (x <= n){ C[x] += val; x += lowbit(x); } return; } ll sum(int x){ ll cnt = 0; while (x > 0){ cnt += C[x]; x -= lowbit(x); } return cnt; } int find(int x) {return parent[x] == x? x : parent[x] = find(parent[x]);} void init(){ memset(C, 0, sizeof(C)); scanf("%d", &n); for (int i = 1; i <= n; i++){ scanf("%d", &data[i]); add(i, data[i]); parent[i] = i; if (data[i] == 1 || data[i] == 0) parent[i] = i + 1; } parent[n + 1] = n + 1; } void work(){ int q; scanf("%d", &q); for (int i = 1; i <= q; i++){ int t, x, y; scanf("%d%d%d", &t, &x, &y); if (t == 1) printf("%lld\n", sum(y) - sum(x - 1)); else{ for (int i = x; i <= y; i = find(i + 1)){ int tmp = data[i]; data[i] = SQRT(data[i]); add(i, data[i] - tmp); if (data[i] <= 1) parent[i] = find(i + 1); } } } } int main(){ int T; #ifdef LOCAL freopen("data.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif init(); work(); return 0; }
View Code
相关文章推荐
- [bzoj3211][并查集][树状数组]花神游历各国
- [BZOJ3211]花神游历各国-树状数组-并查集
- 【BZOJ3211】花神游历各国 树状数组 并查集 均摊分析
- BZOJ 3211: 花神游历各国 |树状数组|并查集
- |BZOJ 3211|树状数组|并查集|花神游历各国
- BZOJ3211 花神游历各国 【树状数组 + 并查集】
- BZOJ3211 花神游历各国 【树状数组 + 并查集】
- 【bzoj3211】【花神游历各国】【线段树+并查集】
- bzoj3211花神游历各国 线段树
- BZOJ 3211 花神游历各国
- BZOJ3038 && BZOJ3211 上帝造题的七分钟2 && 花神游历各国 (线段树 + 开方标记)
- BZOJ 3211: 花神游历各国/BZOJ 3038: 上帝造题的七分钟2 树状数组+并查集
- 【BZOJ3211】花神游历各国(线段树)
- BZOJ 题目3211: 花神游历各国(线段树区间减为平方根,区间求和)
- bzoj 3211: 花神游历各国
- 【BZOJ】3211: 花神游历各国
- 【BZOJ3211】【花神游历各国】&【BZOJ3038】上帝造题的七分钟2(树状数组+链表)
- 【BZOJ】3211 花神游历各国 【CODE[VS]】2492 上帝造题的七分钟2 线段树
- 【bzoj3211】花神游历各国
- 【bzoj3211】花神游历各国 并查集+树状数组