首页 > 其他分享 >P3203做题记录

P3203做题记录

时间:2023-02-07 15:55:05浏览次数:51  
标签:分块 复杂度 记录 sqrt 做题 P3203 pushup

一种更简单的想法,只用用分块思想(或者根号分治?)不用分块。

先考虑暴力怎么做:修改直接改,查询不停跳下一个点。但这样会被卡到 \(O(n^2)\)。

考虑分块思想优化:如果保证每次至少跳 \(\sqrt n\) 的距离,总复杂度就会降到 \(O(n\sqrt n)\)。

于是可以维护每个点开始至少跳 \(\sqrt n\) 的距离要跳多少次,会跳多远。

但是发现这样修改的时候,在它前面的所有点都会被影响,复杂度炸了。所以换作维护从一个点开始到点 \(x\),使得从这里再跳一次就至少跳了 \(\sqrt n\) 的距离。这样就只用重构被修改的点之前的 \(\sqrt n\) 个点了。

总复杂度 \(O(n\sqrt n)\)。

只放核心代码。

code:

点击查看代码
inline void pushup(int x){
	c[x]=1;
	f[x]=e[x];
	while(x+f[x]<=n&&f[x]+f[x+f[x]]<len){
		c[x]+=c[x+f[x]];
		f[x]+=f[x+f[x]];
	}
}
int query(int x){
	int ret=0;
	while(x<=n){
		ret+=c[x];
		x+=f[x];
	}
	return ret;
}
void update(int x,int y){
	e[x]=y;
	pushup(x);
	for(int i=x-1;i>=max(1,x-len);i--){
		pushup(i);
	}
}

温馨提醒:重构和初始化一定要从后往前。

标签:分块,复杂度,记录,sqrt,做题,P3203,pushup
From: https://www.cnblogs.com/yinhee/p/P3203.html

相关文章

  • webrtc windows编译记录
    //cmdsetpath=D:\zzh\depot_tools;%path%setDEPOT_TOOLS_WIN_TOOLCHAIN0setvs2022_install=C:\ProgramFiles\MicrosoftVisualStudio\2022\Community//powershe......
  • 手机微信聊天记录怎么打印出来?
    微信是绝大多数人最常用的聊天工具软件之一,无论是家人、朋友、同事,还是老师和家长都会使用微信来沟通和交流。而有不少网友想要找某件事情的记录时,也会使用微信来搜索聊天......
  • 20230207 物料关联车型报表 问题记录
    1.写sql的时候,主次没分清楚,应该是从marc和t001w表中查数据,剩下的字段再从其他的表中查,但是我直接是把lips和这两张表内连接到一块了,然后遇到lips表中没有的数据,就直接没数......
  • 【踩坑记录】@Transactional注解回滚不生效问题
    @Transactional属于是Spring的常用事务处理注解了,最近在开发时偶然发现这个东西竟然不是100%生效的。问题重现:测试一个批处理方法,方法上加了@Transactional后执行,因为加......
  • 自实现linker加固so遇到的问题记录
    自定义linker加固so是主流的加壳方式,通过实现linker程序来加载,链接加固后的so文件。最后为了让加固后的so中的代码能与其他模块交互,需要修正壳(自定义linker)的soinfo为加固s......
  • Spring在Filter中记录Web请求Request和返回Response的内容及时长
    1简介在SpringMVC中,我们有时需要记录一下请求和返回的内容,方便出现问题时排查。比较Header、RequestBody等。这些在Controller也可以记录,但在Filter中会更方便。而我们......
  • CMake学习记录
    cmake--version查看CMake版本CMake的优势在于可以跨平台CMake与OpenCVOpenCV库的信息包括:版本、头文件路径和库路径在CMakeLists.txt文件find_package(OpenCV......
  • 记录CentOS 部署 express 项目
    第一步、安装node.js1、在服务器上/opt下创建node文件夹,并进入该文件夹mkdir/opt/nodecd/opt/node2、下载node.js3、下载的node.js放到/opt/node文件夹下(可以......
  • mui开发记录(七)动态改变audio标签的播放源
    效果图代码如下<divclass="tan"><divid="audio"></div><divclass="play_b"><divclass="y1"><buttontype="button"onclick="p......
  • mui开发记录(一)图片轮播 界面布局
       最近进行移动端开发,之前接触过web开发,对h5和js等技术有了解,于是选择了mui框架进行混合开发。用了半天时间对其进行了解,发现开发起来还是很便捷的。在此记录一下学......