当前位置:网站首页>外挂---线段树懒标记板子+简单数学推理
外挂---线段树懒标记板子+简单数学推理
2022-07-29 02:17:00 【WAWA源】
题目链接
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define int long long
const int N = 100010;
int n, m;
int w[N];
struct node
{
int l, r;
int sum, sum2;
int add;
}tr[N*4];
void pushup(int u)
{
tr[u].sum = tr[u<<1].sum + tr[u<<1|1].sum;
tr[u].sum2 = tr[u<<1].sum2 + tr[u<<1|1].sum2;
}
void cal(node &t,int add)
{
t.sum2 = t.sum2 + 2ll * t.sum * add + (t.r - t.l + 1) * add * add;
t.sum = t.sum + (t.r - t.l + 1) * add;
}
void pushdown(int u)
{
if(tr[u].add)
{
cal(tr[u<<1], tr[u].add);
cal(tr[u<<1|1], tr[u].add);
tr[u<<1].add += tr[u].add;
tr[u<<1|1].add += tr[u].add;
tr[u].add = 0;
}
}
void build(int u,int l,int r)
{
if(l == r)tr[u] = {
l, r, w[l], w[l]*w[l], 0};
else
{
tr[u] = {
l,r};
int mid = l + r >> 1;
build(u<<1, l, mid);
build(u<<1|1, mid+1, r);
pushup(u);
}
}
void modify(int u,int l,int r,int v)
{
if(tr[u].l >= l && tr[u].r <= r)
{
cal(tr[u], v);
tr[u].add += v;
return ;
}
pushdown(u);
int mid = tr[u].l + tr[u].r >> 1;
if(l <= mid) modify(u<<1, l, r, v);
if(r > mid) modify(u<<1|1, l, r, v);
pushup(u);
}
pair<int,int> query(int u,int l,int r)
{
if(tr[u].l >= l && tr[u].r <= r)return {
tr[u].sum, tr[u].sum2};
int sum1 = 0, sum2 = 0;
int mid=tr[u].l + tr[u].r >> 1;
pushdown(u);
if(l <= mid)
{
pair<int,int> t = query(u<<1, l, r);
sum1 += t.first;
sum2 += t.second;
}
if(r>mid)
{
pair<int,int> t = query(u<<1|1, l, r);
sum1 += t.first;
sum2 += t.second;
}
return {
sum1,sum2};
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>w[i];
build(1, 1, n);
int op,l,r;
while(m--)
{
cin>>op>>l>>r;
if(op==1)
{
int k;cin>>k;
modify(1, l, r, k);
}
else
{
pair<int,int> t = query(1, l, r);
cout<<(t.first * t.first - t.second) / 2 <<'\n';
}
}
}
边栏推荐
- Implement encapsulated public method global call in laravel framework
- VR safety training of mine mining virtual reality improves employees' vigilance and protection awareness
- 《微信小程序-进阶篇》Lin-ui组件库源码分析-Button组件(二)
- 第五天实验
- 九宫格心形拼图小程序源码/带流量主微信小程序源码
- Tesla neural network model hydranet
- php 进程通信系列 (一) 命名管道
- NVIDIA-VPI(Vision Programming Interface)
- time_wait和close_wait产生原因
- Quickly master nodejs installation and getting started
猜你喜欢
随机推荐
Split, an avalanche caused by connection pool parameters
全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
When synchronized encounters this thing, there is a big hole, so be careful
Three expiration strategies
0728~面试题梳理
[untitled]
工程经济学简答题
MySQL和Redis的双写一致性
Others' happiness
XSS靶场(二)xss.haozi
第十天笔记
远离才会思念
多年前的回忆
PHP幸运抽奖系统带后台源码
Production scheme and advantages of online 3D digital exhibition hall
FPGA刷题——存储器(RAM和FIFO的Verilog实现)
ASEMI整流桥S25VB100,S25VB100参数,S25VB100应用
Branch management practice of "two pizza" team
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
HTTP breakpoint resume and cache problems









