【线段树】Codeforces 437B The Child and Set
来源:互联网 发布:2017年网络新项目 编辑:程序博客网 时间:2024/06/03 00:23
题目点这里
vfk大大讲过的 = = 记录一个最大值然后暴力搞就行了。。。
最开始WA了一次是因为Modify没更改最大值。。
#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int Nmax = 1e5 + 5;int N, M;int a[Nmax];#define lc (u << 1)#define rc (u << 1 | 1)namespace SegmentTree { long long sum[Nmax << 2], mmax[Nmax << 2]; inline long long Max(long long a, long long b) { return a > b ? a : b; } inline void Push_up(int u) { sum[u] = sum[lc] + sum[rc]; mmax[u] = Max(mmax[lc], mmax[rc]); } inline void build(int u, int l, int r) { if (l == r) { sum[u] = mmax[u] = a[l]; return; } int mid = (l + r) >> 1; build(lc, l, mid); build(rc, mid + 1, r); Push_up(u); } inline long long Query(int u, int l, int r, int L, int R) { if (l == L && r == R) return sum[u]; int mid = (l + r) >> 1; if (R <= mid) return Query(lc, l, mid, L, R); else if (L > mid) return Query(rc, mid + 1, r, L, R); return Query(lc, l, mid, L, mid) + Query(rc, mid + 1, r, mid + 1, R); } inline void Mod(int u, int l, int r, int L, int R, int x) { if (mmax[u] < x) return; if (l == r) { sum[u] = mmax[u] = sum[u] % x; return; } int mid = (l + r) >> 1; if (R <= mid) Mod(lc, l, mid, L, R, x); else if (L > mid) Mod(rc, mid + 1, r, L, R, x); else { Mod(lc, l, mid, L, mid, x); Mod(rc, mid + 1, r, mid + 1, R, x); } Push_up(u); } inline void Modify(int u, int l, int r, int pos, int x) { if (l == r) { mmax[u] = sum[u] = x; return; } int mid = (l + r) >> 1; if (pos <= mid) Modify(lc, l, mid, pos, x); else Modify(rc, mid + 1, r, pos, x); Push_up(u); }}int main(){ ios :: sync_with_stdio(false); cin >> N >> M; for (int i = 1; i <= N; ++i) cin >> a[i]; using namespace SegmentTree; build(1, 1, N); for (int sign, l, r, x; M --; ) { cin >> sign >> l >> r; if (sign == 1) cout << Query(1, 1, N, l, r) << endl; else if (sign == 2) { cin >> x; Mod(1, 1, N, l, r, x); } else Modify(1, 1, N, l, r); } return 0;}
0 0
- 【线段树】Codeforces 437B The Child and Set
- Codeforces 437B The Child and Set
- CodeForces 437B The Child and Set
- Codeforces 437B The Child and Set(暴力)
- G - The Child and Set-CodeForces 437B-水题
- codeforce 437B The Child and Set
- Codeforces div.2 B. The Child and Set
- Codeforces #250 (Div. 2) B. The Child and Set
- codeforces 06/01/B The Child and Set
- Codeforces Round #250 (Div. 2) -B. The Child and Set
- CodeForces The Child and Set
- 250 B. The Child and Set
- The Child and Set
- The Child and Set
- CF437 B. The Child and Set(贪心)
- The Child and Sequence(线段树)
- Codeforces 437A The Child and Homework
- codeforces 437C The Child and Toy
- 学习使用Git和远程代码库,已亲自试用,非常好
- 走进微信的神奇世界--数据的发送和接收
- 数字图像处理的研究方法
- MFC 定时器OnTimer的使用|string转为LPCTSTR的乱码问题
- Android Activity的生命周期
- 【线段树】Codeforces 437B The Child and Set
- IOS自动布局的一些使用
- awk操作
- 黑马程序员-----Java基础总结
- 排序
- Java之多线程
- ubuntu使用bitbucket(1)
- Android应用如何支持屏幕多尺寸多分辨率问题
- 从零开始学习Python(一) 之初识python