D. The Child and Sequence
题意: 三个操作
1.给 l , r 求数组 l 到 r 的和
2.给 l , r, x 让数组 l 到 r 中所有元素都mod上x
3.给k , x 改变a[k] = x
线段树,维护区间最大值和区间和,
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
struct node
{
int l , r ;
long long sum , maxx;
}tr[N * 4 ] ;
long long w[N] ;
int n , k ;
void push_up(node &u , node &l , node &r )
{
u.sum = l.sum + r.sum ;
u.maxx = max(l.maxx , r.maxx ) ;
}
void build(int u , int l , int r )
{
if(l == r )
{
tr[u] = {l , r , w[l] ,w[l] };
return ;
}
tr[u] = {l , r } ;
int mid = l +r >> 1 ;
build(u << 1 , l , mid ) , build(u << 1 | 1 , mid + 1 , r ) ;
push_up(tr[u] , tr[u&l