
算法
文章平均质量分 86
中原睚眦
向每一个OIer致敬
展开
-
基础算法——前缀和
前缀和是解决区间问题的一个基础手段,前缀和的思想也可以用来解决一些其他的问题那么前缀和到底是什么呢?目录例题引入解决方法:1.朴素解法(暴力出奇迹)2.前缀和3.线段树(还有一些乱七八糟dalao的解法)前缀和1.思想2.代码3.二维前缀和例题引入给定一个数列an,再有Q次的询问,每次询问给出两个区间的端点l,r,请你求出这一段区间所有数之和...原创 2019-11-13 23:56:16 · 783 阅读 · 2 评论 -
基础算法——快速幂(模)
参考blog:https://blog.youkuaiyun.com/u012469987/article/details/38158687目录引言例题题目描述:解法:1.朴素解法(爆炸必备良品)2.快速幂与快速幂模2.1递归形式2.2二进制形式2.3快速幂模引言快速幂可以说是信息学竞赛里面一个基础的考点了快速幂的代码不是很长,但是需要学习它的思想...原创 2019-11-13 22:47:55 · 1459 阅读 · 0 评论 -
矩阵乘法(加快速幂)
参考文献:《算法导论》、dalao的blog我真的觉得本篇良心,大大干货引言:题目:斐波那契数列很喜欢被研究,其前几项为:1 1 2 3 5 8 13 ……则,求斐波那契数列的第n项是?解法:1.朴素求解:由斐波那契数列的定义,可以由递推求解f(1)=1,f(2)=1f(n)=f(n-1)+f(n-2) (n>=3)f[1]=f[2]=1;...原创 2019-11-10 22:14:24 · 388 阅读 · 0 评论 -
分块算法总结
分块分块算法顾名思义,就是将一个序列分成若干个部分(块)来解决 线段树也可以解决分块的问题,但这里只介绍分块算法解决问题:说是分块,那么一共要分几块呢? 据机房dalao说,分成sqrt(n)为每块长度 这样一来,假设有n个元素的序列,就有 ceil(n/sqrt(n)) 块核心的数据结构:struct Block{int l,r;//块的左右区间端点int ta...原创 2018-09-09 17:21:25 · 913 阅读 · 1 评论 -
浅谈KMP算法
目录算法由来(历史课)问题引入解法:(1)暴力解法(2)玄学解法KMP算法:开始前你必须知道的:next数组:思路:代码:KMP算法:思路:代码:模板题:KMP算法是一种快速的匹配字符子串位置的算法,其思想对于其他一些算法也有沿用算法由来(历史课)KMP算法是由D.E.Knuth,J.H.Morris和V.R.Prat...原创 2019-10-07 22:20:01 · 231 阅读 · 0 评论 -
三分算法(秦九韶算法补充)
目录介绍:问题引入:补充:秦九韶算法解法:三分思路:(以上凸函数为例,下凸函数反之)代码:一、函数为上凸函数二、函数为下凸函数模板题:介绍:说起三分,肯定要提到三分的近亲——二分。回顾一下二分是什么:对于一个区间,求得其目标(可以是最值),我们可以采取折半查找,若一边的条件不满足,则继续向另外一边折半下去,直到l==r(有些时候有误差),此时的m...原创 2019-10-08 17:34:19 · 666 阅读 · 0 评论