首页 > 其他分享 >Loj分块模板1

Loj分块模板1

时间:2023-05-18 12:12:19浏览次数:57  
标签:ch 分块 Loj pos int 5211314 include 模板

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>

using namespace std;

int n, m, len;
int pos[5211314], add[5211314], num[5211314];

inline void Add(int LiftPos, int RightPos, int val) {
	int l = pos[LiftPos], r = pos[RightPos];
	if (l == r) {
		add[l] += val;
	}
	else {
		for (int i = l + 1; i <= r - 1; ++ i) 
			add[i] += val;
		for (int i = LiftPos; i <= l * len; ++ i) 
			num[i] += val;
		for (int i = (r - 1) * len + 1;i <= RightPos; ++ i) 
			num[i] += val;
	}
}

inline int Get(int id) {
	return num[id] + add[pos[id]];
}

inline int read() {
	int x = 0, f = 1;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = (x << 1) + (x << 3) + (ch - '0');
		ch = getchar();
	}
	return x * f;
}

void write(int x) {
	if (x < 0) putchar('-'), x *= -1;
	if (x > 9) write(x / 10);
	putchar(x % 10 + '0');
	return;
}

int main() {
	n = read();
	m = read();
	len = sqrt(n);
	for (int i = 1; i <= n; ++ i) {
		num[i] = read();
		pos[i] = (i - 1) / len + 1;
	}
	for (int i = 1, opt, x, y, k; i <= m; ++ i) {
		opt = read();
		if (opt == 1) {
			x = read(), y = read(), k = read();
			Add(x, y, k);
		}
		if (opt == 2) {
			x = read();
			write(Get(x));
			putchar('\n');
		}
	}
	return 0;
}

标签:ch,分块,Loj,pos,int,5211314,include,模板
From: https://www.cnblogs.com/jueqingfeng/p/17411534.html

相关文章

  • Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票
    Midjourney|文心一格prompt教程[TextPrompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学场景6:游戏Prompt真的越长越好吗?按照Midjourney的官方文档里的说法,并不一定:Promptscanbeverysimple.Singlewords(orevenanemoji!)willproducean......
  • 模板模式(Template Pattern)
    模板模式一、介绍  模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方式使......
  • SIEMENS/西门子西门子1200plc轴运动控制程序模板 介绍:此
    SIEMENS/西门子西门子1200plc轴运动控制程序模板介绍:此程序是之前给海康威视做的一台装路由器壳子的机器。程序有以下:1):调用轴控制块做的控制3个伺服,2):1个电缸,3):用PUTGET块与上下游plc通讯,4):轴控制块5):气缸报警块6):完整的电路图7):威纶通触摸屏程序8):IO表程序块已经在很多个项......
  • opencv模板匹配
    opencv模板匹配  读取图像并转换为灰度图像。 importcv2#读取图像img=cv2.imread('template.jpg')#转换为灰度图像gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 检测关键点并绘制矩形框。 #使用SIFT算法检测关键点......
  • 【BZOJ4241】【回滚莫队模板题】历史研究
    Description给定一个序列,每次询问区间[l,r][l,r]内,所有权值与其出现次数的乘积的最大值。Solution回滚莫队模板题。将询问以左端点所在块为第一关键字,右端点为第......
  • 【CF1012E】【LOJ2818】Cycle Sort(并查集)
    Description给定一个⻓为nn的数列,你可以多次进行如下操作:选定kk个不同的下标i1,i2…iki1,i2......
  • 企业级项目模板的配置与集成(Vite + Vue3 + TypeScript)
    企业级项目模板的配置与集成(Vite+Vue3+TypeScript)1、项目介绍项目使用:eslint+stylelint+prettier来对我们代码质量做检测和修复。需要使用husky来做commit拦截需要使用commitlint来统一提交规范需要使用preinstall来统一包管理工具。2、环境准备nodev16.14.2pnp......
  • P3919 【模板】可持久化线段树 1(可持久化数组) 题解
    一、题目描述:维护这样的一个长度为$n$的数组,支持以下两种操作$1$:在某个历史版本上修改某一个位置上的值$2$:访问某个历史版本上的某一位置的值每进行一次操作,就会生成一个新的版本(对于操作2,生成的就是一个完全一样的版本)。版本编号即为当前操作......
  • 离散化模板
    https://www.acwing.com/problem/content/description/804/#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<vector>usingnamespacestd;typedefpair<int,int>PII;constintN=300010;/......
  • LG P5410 【模板】扩展 KMP(Z 函数)
    \(\text{template}\)注意z[1]=n,从下标\(2\)开始求z!!\(\text{Code}\)#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=2e7+5;intz[N],p[N],n,m;chara[N],b[N];voidgetZ(char*s,intn,int*z){for(......