Bitris 3 a0 a1 ar int sum int
Задача Bitris 3
Повна реалізація всіх функцій для структури дерево Фенвіка // a[0] + a[1] +. . . + a[r] int sum (int r) { int result = 0; for (; r >= 0; r = (r & (r+1)) - 1) result += t[r]; return result; } // a[l] + a[l+1] +. . . + a[r] int sum (int l, int r) { return sum (r) - sum (l-1); } // a[i] = a[i] + delta void inc (int i, int delta) { for (; i < n; i = (i | (i+1))) t[i] += delta; } 10
Простий розв’язок #include <bits/stdc++. h> using namespace std; const int MAXN = 1 e 5 + 5; const int INF = 1234567890; int a[MAXN]; int main() { int n, m; cin >> n; for(int i = 0; i < n; ++i) { cin >> a[i]; } cin >> m; for(int i = 0; i < m; ++i) { int l, r; cin >> l >> r; l--, r--; int mn = INF; for(int i = l; i <= r; ++i) { mn = min(mn, a[i]); } cout << mn << "n"; } } 18
Пришвидшений розв’язок #include <bits/stdc++. h> using namespace std; const int N = 1 e 5 + 5; const int INF = 1 e 9 + 7; int a[N], t[4 * N], n, m, l, r; void build (int v, int l, int r) { if (l == r) { t[v] = a[l]; return; } int mid = (l + r) / 2; build(v + v, l, mid); build(v + 1, mid + 1, r); t[v] = min(t[v + v], t[v + 1]); } int get(int v, int l, int r, int L, int R) { if (r < L || l > R) return INF; if (l >= L && r <= R) return t[v]; int mid = (l + r) / 2; return min(get(v + v, l, mid, L, R), get(v + 1, mid + 1, r, L, R)); } int main() { cin >> n; for (int i = 0; i < n; ++i) cin >> a[i]; build(1, 0, n - 1); cin >> m; while (m--) { cin >> l >> r; --l, --r; cout << get(1, 0, n - 1, l, r) << "n"; } return 0; } 19
Задачі на e-olymp-і https: //www. e-olymp. com/uk/problems/4073 https: //www. e-olymp. com/uk/problems/4496 https: //www. e-olymp. com/uk/problems/8247 https: //www. e-olymp. com/uk/problems/7488 https: //www. e-olymp. com/uk/problems/3252 https: //www. e-olymp. com/uk/problems/2941 https: //www. e-olymp. com/uk/problems/3503 https: //www. e-olymp. com/uk/problems/4255 https: //www. e-olymp. com/uk/problems/4484 https: //www. e-olymp. com/uk/problems/2041 https: //www. e-olymp. com/uk/problems/2906 https: //www. e-olymp. com/uk/problems/2907 https: //www. e-olymp. com/uk/problems/4504 https: //www. e-olymp. com/uk/problems/4510 20
Джерела • • http: //e-maxx. ru/algo/fenwick_tree https: //informatics. mccme. ru/moodle/mod/book/view. php? id=491 https: //neerc. ifmo. ru/wiki/index. php? title=Дерево_Фенвика https: //habr. com/ru/post/112828/ http: //e-maxx. ru/algo/segment_tree https: //neerc. ifmo. ru/wiki/index. php? title=Дерево_отрезков. _Построение https: //habr. com/ru/post/128787/ 21
- Slides: 22