我是靠谱客的博主 可耐大叔,这篇文章主要介绍C - 敌兵布阵,现在分享给大家,希望可以做个参考。

模板题,用得线段树。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include<iostream> #include<string.h> #include<string> #include<stack> #include<stdio.h> #include<queue> #include<functional> #include<set> #include<map> #include<stdlib.h> #include<vector> #include<math.h> #include <algorithm> #pragma warning(disable:4996) using namespace std; int a[500010]; char s[60]; int sum[500001]; int q; void build(int node, int left, int right) { if (left == right) sum[node] = a[left]; else { int middle = (left + right) / 2; build(2 * node, left, middle); build(2 * node + 1, middle + 1, right); sum[node] = sum[2 * node] + sum[2 * node + 1]; } } void add(int node, int left, int right, int find, int v) { if (left == right) sum[node] += v; else { int middle = (left + right) / 2; if (find <= middle) add(2 * node, left, middle, find, v); if (find>middle) add(2 * node + 1, middle + 1, right, find, v); sum[node] += v; } } void getsum(int node, int left, int right, int L, int R) { if (right<L || left>R) return; if (L <= left && right <= R) q += sum[node]; else { int middle = (left + right) / 2; getsum(2 * node, left, middle, L, R); getsum(2 * node + 1, middle + 1, right, L, R); } } int main() { int n, i, j,t,count=1; scanf("%d",&t); while (t--) { scanf("%d", &n); memset(sum, 0, sizeof(sum)); memset(a, 0, sizeof(a)); for (i = 1; i <= n; i++) scanf("%d", &a[i]); build(1, 1, n); printf("Case %d:n", count++); while (~scanf("%s", s)&&s[0]!='E') { if (s[0] == 'Q') { int A, B; q = 0; scanf("%d%d", &A, &B); getsum(1, 1, n, A, B); printf("%dn", q); } if (s[0] == 'A') { int A, B; scanf("%d%d", &A, &B); add(1, 1, n, A, B); } if (s[0] == 'S') { int A, B; scanf("%d%d", &A, &B); add(1, 1, n, A, -B); } } } return 0; }


最后

以上就是可耐大叔最近收集整理的关于C - 敌兵布阵的全部内容,更多相关C内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部