3211: 花神游历各国
来源:互联网 发布:淘宝买游戏装备流程 编辑:程序博客网 时间:2024/06/10 05:29
Description
Input
Output
每次x=1时,每行一个整数,表示这次旅行的开心度
Sample Input
4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4
Sample Output
101
11
Input
Output
每次x=1时,每行一个整数,表示这次旅行的开心度
Sample Input
4
1 100 5 5
5
1 1 2
2 1 2
1 1 2
2 2 3
1 1 4
Sample Output
101
11
11
#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;const int maxm = 100005;#define ll long longtypedef struct{int l, r, flag;ll sum;}H;H tree[maxm*7];ll f[maxm], SUM = 0;void make(int num, int a, int b);void change(int num, int a, int b);void query(int num, int a, int b);int main(){int n, i, j, k, sum, q, d, x, y;scanf("%d", &n);for (i = 1;i <= n;i++)scanf("%d", &f[i]);make(1, 1, n);scanf("%d", &q);while (q--){scanf("%d%d%d", &d, &x, &y);if (d == 1){SUM = 0;query(1, x, y);printf("%lld\n", SUM);}elsechange(1, x, y);}return 0;}void make(int num, int a, int b){tree[num].l = a;tree[num].r = b;tree[num].flag = 0;if (a == b){tree[num].sum = f[a];if (tree[num].sum <= 1)tree[num].flag = 1;return;}int mid = (a + b) / 2;make(num << 1, a, mid);make(num << 1 | 1, mid + 1, b);tree[num].sum = tree[num << 1].sum + tree[num << 1 | 1].sum;}void change(int num, int a, int b){if (tree[num].flag)return;if (tree[num].l == tree[num].r){tree[num].sum = sqrt((double)tree[num].sum);if (tree[num].sum <= 1)tree[num].flag = 1;return;}int mid = (tree[num].l + tree[num].r) / 2;if (a>mid)change(num << 1 | 1, a, b);else if (b <= mid)change(num << 1, a, b);else{change(num << 1, a, mid);change(num << 1 | 1, mid + 1, b);}tree[num].sum = tree[num << 1].sum + tree[num << 1 | 1].sum;tree[num].flag = tree[num << 1].flag && tree[num << 1 | 1].flag;}void query(int num, int a, int b){if (tree[num].l >= a && tree[num].r <= b){SUM += tree[num].sum;return;}int mid = (tree[num].l + tree[num].r) / 2;if (a>mid)query(num << 1 | 1, a, b);else if (b <= mid)query(num << 1, a, b);else{query(num << 1, a, mid);query(num << 1 | 1, mid + 1, b);}}
阅读全文
0 0
- 3211: 花神游历各国
- 3211: 花神游历各国
- bzoj-3211 花神游历各国
- [BZOJ 3211] 花神游历各国
- bzoj 3211 花神游历各国
- BZOJ 3211 花神游历各国
- BZOJ 3211 花神游历各国
- [bzoj-3211]花神游历各国 题解
- 【bzoj3211】花神游历各国
- 【BZOJ3211】花神游历各国
- 【bzoj3211】花神游历各国
- BZOJ3211花神游历各国
- [BZOJ3211]花神游历各国
- bzoj3211 花神游历各国
- [bzoj3211]花神游历各国
- bzoj3211花神游历各国
- bzoj3211 花神游历各国
- bzoj3211花神游历各国
- HDU 6027 Easy Summation (gcd)
- 17.7.3小结、【矩阵快速幂】2017武大校赛I题:A simple math problem即nyoj2333、 bzoj2326
- leetcode 56. Merge Intervals
- redisson client 介绍及优缺点 (18)
- 为什么大多数人的Facebook 付费广告都在亏钱?
- 3211: 花神游历各国
- Redis事务
- 利用递归求n的阶乘
- 第二章 OpenResty(Nginx+Lua)开发入门
- 架构师之路--视频业务介绍,离线服务架构和各种集群原理(1/2)
- 简单好玩的算法(二)
- JDBC基础
- CALayer与iOS动画 讲解及使用
- 7.3