//test 洛谷模板题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> piir;
const int maxn = 1e5+5;
int n,m,r,mod;
ll wt[maxn],w[maxn];
struct node{
int v,next;
}e[maxn*2];
int head[maxn],tot;
void init(){
tot=0;
memset(head,-1,sizeof(head));
}
void add(int u,int v){
e[tot].v=v;
e[tot].next=head[u];
head[u]=tot++;
}
//segment
#define mid (l+r>>1)
#define ls (k1<<1)
#define rs (k1<<1|1)
#define len (r-l+1)
ll sum[maxn<<2],lazy[maxn];
void pushup(int k1){sum[k1]=(sum[ls]+sum[rs])%mod;}
void pushdown(int k1,int l,int r){
lazy[ls] = (lazy[ls]+lazy[k1]) % mod;
lazy[rs] = (lazy[rs]+lazy[k1]) % mod;
sum[ls] = (sum[ls] + (lazy[k1]*(mid-l+1))%mod) % mod;
sum[rs] = (sum[rs] + (lazy[k1]*(r-mid))%mod) % mod;
lazy[k1] = 0;
}
void build(int k1,i
树链剖分模板
最新推荐文章于 2021-07-21 16:28:08 发布