HDU3074-Multiply game(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3074
非常简单的一个线段树单点更新求区间的模板题,只需要把平时存放区间和的数组sum[]用来表示区间的成绩,将Query求和函数,改成求累积即可。
还有一个问题就是,我在hudoj上用C++交会TLE,但是换成G++就AC了,不知道怎么回事e。
有点小问题的ac代码:
1 #include<iostream>
2 #include<cstdio>
3 #include<algorithm>
4 #include<vector>
5 #include<map>
6 #include<queue>
7 #include<set>
8 #include<cmath>
9 #include<list>
10 #include<cstring>
11 #include<string>
12 #define ll long long
13 #define ull unsigned long long
14 #define inf 0x3f3f3f3f
15 #define inff 0x7fffffff
16 using namespace std;
17 const int N = 50000 + 10;
18 const int M = 1000000 + 10;
19 const ll mod = 1e9 + 7;
20
21 ll a[N];
22 ll sum[N << 2];
23 int add[N << 2];
24 char ch[10];
25
26 void PushUp(int rt) {
27 sum[rt] = (sum[rt << 1] * sum[rt << 1 | 1]) % mod;
28 }
29
30 void Build(int l, int r, int rt) {
31
32 if (l == r) {
33 sum[rt] = a[l];
34 return;
35 }
36 int mid = (l + r) >> 1;
37 Build(l, mid, rt << 1);
38 Build(mid + 1, r, rt << 1 | 1);
39 PushUp(rt);
40
41 return;
42 }
43
44 void PointUpdate(int L, int C, int l, int r, int rt) {
45
46 if (l == r) {
47 sum[rt] = C;
48 return;
49 }
50 int mid = (l + r) >> 1;
51 if (L <= mid) PointUpdate(L, C, l, mid, rt << 1);
52 else PointUpdate(L, C, mid + 1, r, rt << 1 | 1);
53 PushUp(rt);
54
55 return;
56 }
57
58 ll Query(int L, int R, int l, int r, int rt) {
59
60 if (l >= L && r <= R) {
61 return sum[rt];
62 }
63 int mid = (l + r) >> 1;
64
65 ll ans = 1;
66 if (L <= mid) ans = (ans * Query(L, R, l, mid, rt << 1)) % mod;
67 if (R > mid) ans = (ans * Query(L, R, mid + 1, r, rt << 1 | 1)) % mod;
68 //PushUp(rt);
69
70 return ans;
71 }
72
73 int main() {
74
75 ios::sync_with_stdio(false);
76 cin.tie(0);
77 int T;
78 cin >> T;
79 while (T--) {
80 int n;
81 cin >> n;
82 for (int i = 1; i <= n; i++) {
83 cin >> a[i];
84 }
85 Build(1, n, 1);
86 int q;
87 cin >> q;
88 while (q--) {
89 int p, x, y;
90 cin >> p >> x >> y;
91 if (p == 0) {
92 cout << Query(x, y, 1, n, 1) % mod << "\n";
93 }
94 else {
95 PointUpdate(x, y, 1, n, 1);
96 }
97 }
98 }
99
100 return 0;
101 }
永远热爱,永远向着光。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】