分块学习笔记qwq
我没想到居然就学到分块了...哇我还一直觉得分块听起来挺牛逼的一直想学的来着qwq(其实之前好像vjudge上有道题是用分块做的?等下放链接qwq
所以想着就写个学习笔记趴qwq
首先知道分块的时间复杂度 O(n√n)
发现分块其实就是个有优化的暴力?
肥肠暴力,,,
简单说下,就是分成√n块,然后大段的随便维护一下局部的随便朴素暴力掉就成了,,
哪里牛逼,,,浪费我感情QAQ
详细港下趴还是qwq
举个栗子好讲些qwq
假如给了一个包含n个数的序列a,请支持区间修改操作和区间查询操作
显然可以线段树树状数组艹过去
但是这里讲的是分块,就说下分块
分块就把它分成长度为√n的多少多少块
然后对于修改操作,我们可以把完全包含的块直接修改这个块的sum和add,不完全包含的块(也就两边的嘛)就暴力修改
查询一样的,完全包含直接加上这一块的sum,不完全包含的暴力求和
真的很暴力嘛所以,优雅的暴力应该说是?
显然复杂度不会超√n嘛,完
啊还有一个很重要的忘记讲了
就是,分块一般来说在什么时候会很有用的
我们可以发现分块和线段树树状数组什么的其实很多是重合的嘛,然后线段树和树状数组理论上还快一些,那为什么要用分块呢
首先树状数组,局限性很大,可以先pass掉
然后线段树,我们可以发现它是从它的左右崽推过来的嘛,那如果不满足能合并性质的就不能用线段树了
所以这时候就可以用分块艹过去qwq(典型例题比如蒲公英?众数是不能继承的嘛qwq所以就不能用线段树辣qwq)
(讲个,小彩蛋...
就是我用分块艹过了线段树的模板
然后我惊喜地发现分块的时间居然比线段树优秀???恩???线段树的常数这么大的嘛???突然感觉线段树好鸡肋啊...又难打又慢QAQ
分块学习笔记qwq的更多相关文章
- 整除分块学习笔记+[CQOI2007]余数求和(洛谷P2261,BZOJ1257)
上模板题例题: [CQOI2007]余数求和 洛谷 BZOJ 题目大意:求 $\sum^n_{i=1}k\ mod\ i$ 的值. 等等……这题就学了三天C++的都会吧? $1\leq n,k\leq ...
- luogu P4168 蒲公英+ 分块学习笔记
传送门 题目描述 在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关. 为了简化起见,我们把所有的蒲公英看成一个长度为n的序列\((a_1,a_2..a_n)\),其中 \(a_i\)为一 ...
- 莫比乌斯反演&整除分块学习笔记
整除分块 用于计算$\sum_{i=1}^n f(\lfloor{n/i} \rfloor)*i$之类的函数 整除的话其实很多函数值是一样的,对于每一块一样的商集中处理即可 若一个商的左边界为l,则右 ...
- 莫队学习笔记(未完成QAQ
似乎之前讲评vjudge上的这题的时候提到过?但是并没有落实(...我发现我还有好多好多没落实?vjudge上的题目还没搞,然后之前考试的题目也都还没总结?天哪我哭了QAQ 然后这三道题我都是通过一道 ...
- 图论学习笔记·$Floyd$ $Warshall$
对于图论--虽然本蒟蒻也才入门--于是有了这篇学习笔记\(qwq\) 一般我们对于最短路的处理,本蒟蒻之前都是通过构建二维数组的方式然后对每两个点进行1次深度或者广度优先搜索,即一共进行\(n\)^2 ...
- $Min\_25$筛学习笔记
\(Min\_25\)筛学习笔记 这种神仙东西不写点东西一下就忘了QAQ 资料和代码出处 资料2 资料3 打死我也不承认参考了yyb的 \(Min\_25\)筛可以干嘛?下文中未特殊说明\(P\)均指 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
- osgEarth学习笔记(转载)
osgEarth学习笔记1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...
随机推荐
- jekins构建通知邮件配置及邮件附件设置,jenkins构建通知邮件没有RF的log和report文件
全局配置: 系统管理-系统设置-Extended E-mail Notification (本邮件是程序自动下发的,请勿回复!)<br/><br/>项目名称:$PROJECT_ ...
- ListView实现多种item布局的方法和注意事项
这篇文章的效果也是大家常见的,各种通讯应用的对话列表都是这种方式,像微信.whatsapp.易信.米聊等.我们这篇文章也权当为回忆,形成简单的笔记.这篇文章参考了2009年Google IO中的< ...
- Java的Integer和int有什么区别
Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper cla ...
- opencv3——ANN算法的使用
最近刚转用opencv3,使用ANN算法时遇到了一些问题,记录下来. 训练神经网络的代码如下: //创建ANN Ptr<ANN_MLP> bp = ANN_MLP::create(); 设 ...
- 【PHP】 curl 上传文件 流
在运行过程中, 以下两种方式要看你的PHP 版本 'file' =>'@' .$filePath 'file' =>new CURLFile(realpath($filePath)) 本次 ...
- Java初学者都必须理解的六大问题 (整理自网络)
问题一:我声明了什么! 1. String s = "Helloworld!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello ...
- 完全卸载Oracle数据库软件
软件环境: 1.Windows xp+ORACLE 8.1.7 2.ORACLE安装路径为:C:\ORACLE 实现方法: 1. 开始->设置->控制面板->管理工具->服务 ...
- Unity3D 边缘高光Shader
Shader "Custom/NewShader" { Properties { _MainTex ("Base (RGB)", 2D) = "whi ...
- Capistrano 部署rails 应用
1 安装 gem install capistrano // For mutiple stages gem install capistrano-ext 2 准备 capify . 这个命令会创建Ca ...
- Yet another way to manage your NHibernate ISessionFactory
So here is my current UnitOfWork implementation. This one makes use of the somewhat new current_ses ...