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年一帆风顺,前途似锦,期末取得佳绩。

相关推荐
cmc102818 分钟前
127.XIlinx fpga端的pcie(XDMA)与驱动是如何交换数据的
笔记·fpga开发
optimistic_chen21 分钟前
【Java EE进阶 --- SpringBoot】Mybatis操作数据库(基础二)
xml·数据库·spring boot·笔记·java-ee·mybatis
小龙报27 分钟前
《算法通关指南---C++编程篇(1)》
开发语言·c++·程序人生·算法·学习方法·visual studio
Cx330❀35 分钟前
《C++ 手搓list容器底层》:从结构原理深度解析到功能实现(附源码版)
开发语言·数据结构·c++·经验分享·算法·list
摇滚侠44 分钟前
Spring Boot 3零基础教程,properties文件中配置和类的属性绑定,笔记14
java·spring boot·笔记
Swift社区1 小时前
LeetCode 399 除法求值
算法·leetcode·职场和发展
仰泳的熊猫1 小时前
LeetCode:98. 验证二叉搜索树
数据结构·c++·算法·leetcode
暴力求解1 小时前
C++ --- 模版初阶
c++
CC.GG1 小时前
【C++】STL容器--list的使用
开发语言·c++·list
Python智慧行囊1 小时前
图像处理(三)--开运算与闭运算,梯度运算,礼帽与黑帽
人工智能·算法·计算机视觉