LOJ #6277 数列分块1题解 && 2023年最后一篇题解

Part #0 . 前言 \text{Part \#0 . 前言} Part #0 . 前言

分块是一种优雅的暴力。


Part #1 . 数列分块入门1 \text{Part \#1 . 数列分块入门1} Part #1 . 数列分块入门1

传送门

这题是一个基础的分块,块外的暴力,块内做标记,块长 n \sqrt{n} n ,块数 n \sqrt{n} n ,注意查询的时候要加上标记。

cpp 复制代码
/*
1. sqrt(m*2/3)
*/
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define fi first
#define se second
#define rg register
#define il inline
#define forz(i,a,b) for(register int i((a));i<=(b);++i)
#define forn(i,a,b) for(register int i((a));i>=(b);--i)
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)

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<<3)+(x<<1)+ch-'0';ch=getchar();}
	return x*f;
}

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

const int maxn=5e4+100;
const int mod=993244853;
const int inf=9e18;

int a[maxn];
int fk[maxn];
int st[maxn],ed[maxn],lenn[maxn];
int block[maxn];
int num,len;

inline void init(int n)
{
	len=sqrt(2*n/3);
	num=n%len?n/len+1:n/len;
	forz(i,1,num)
	{
		st[i]=(i-1)*len+1;
		ed[i]=min(n,i*len);
		lenn[i]=ed[i]-st[i]+1;
	}
	forz(i,1,num) forz(j,st[i],ed[i]) block[j]=i;
}

inline void solve()
{
	int n=read();
	forz(i,1,n) a[i]=read();
	init(n);
	while (n--)
	{
		int op=read(),l=read(),r=read(),c=read();
		if(!op)
		{
			if(block[l]==block[r]) forz(i,l,r) a[i]+=c;
			else
			{
				forz(i,l,ed[block[l]]) a[i]+=c;
				forz(i,block[l]+1,block[r]-1) fk[i]+=c;
				forz(i,st[block[r]],r) a[i]+=c;
			}
		}
		else
		{
			write(a[r]+fk[block[r]]);
			putchar('\n');
		}
	}
	putchar('\n');
}

signed main()
{
//    IOS;
	int _=1;
	while (_--) solve();
	return 0;
}

明天就是2024年了,祝大家在2024年一帆风顺,前途似锦,期末取得佳绩。

相关推荐
saoys2 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
MM_MS2 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E2 小时前
【二分法】寻找峰值
算法
mit6.8243 小时前
位运算|拆分贪心
算法
电子小白1233 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
ghie90903 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab
恋爱绝缘体13 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wuk9983 小时前
VSC优化算法MATLAB实现
开发语言·算法·matlab
Z1Jxxx3 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++4 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法