- 博客(7)
- 收藏
- 关注
转载 【学习笔记】莫队算法
零. 这是一篇特别草率的学习笔记。一.关于莫队 一种离线的关于区间操作的算法。 一般莫队会和以下知识点一起使用: 1.分块思想。 2.离散化。 3.树链剖分/倍增,用于应付树上的(然而本蒟蒻写这篇博客时还不会,后续补充)二.算法实现 1.SPOJ 3267 D-Query 暴力做法:记录每个数字出现的次数,每个询问统计出现区间内...
2019-09-18 19:16:00
112
转载 【学习笔记】贪心好题!
这是一篇持续更新的博客。 不废话了直接上题吧。 1.洛谷 P2512 糖果传递 有n个小朋友坐成一圈,每人有Ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。 题解:最终结果可以计算,记为S。 我们假设所有传递都是向左传递(有向右的自然成为负数),设每个人的传递数量是Ki,这样便于统...
2019-09-18 16:33:00
138
转载 【学习笔记】manacher算法
一.关于manacher manacher算法用于求解一个字符串的回文子串半径长度。 它可以线性地求解对于字符串中的每一个字符,以它本身为中心的最长回文串的半径。 而且这个回文串的每一个以这个字符为中心的子串都是回文串。 这个算法的时间复杂度为O(n)。二.回文子串长度的奇偶性带来的问题。 当一个回文串长度是奇数的时候,它必然有一个回文中心,回文...
2019-08-24 15:33:00
82
转载 【学习笔记】扫描线
一.关于扫描线 基础是求周长并和面积并的算法。 注意,扫描线是一条不存在的线。 假设有一条扫描线从一个图形的下方扫向上方(或者左方扫到右方),那么通过分析扫描线被图形截得的线段就能获得所要的结果。二.扫描线求面积并(由于本人不会做图,以下图片均来自洛谷的题解) 我们看一下这个东西。 我们模拟一条扫描线,从下到上扫过整个平面。 这条扫描...
2019-08-23 18:13:00
334
转载 【模板】线段树
一.最基础的线段树:支持区间加减修改,区间查询。 其实两个差分树状数组也可以搞定这个事情,不过还是线段树这样更加直观一点。 建议初步接触线段树的同学先看主程序再看函数,然后有需要可以手动模拟一下,有助于理解每个函数的作用~#include<bits/stdc++.h>using namespace std;struct SegTree{...
2019-08-22 19:27:00
107
转载 【模板】树状数组
一.一维树状数组 1.支持单点修改(加减),区间查询。 代码如下: 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,m,x,y,a[500001],Tree[500001]; 4 int lowbit(int x) 5 { 6 return x&-...
2019-08-21 16:28:00
82
转载 【学习笔记】RMQ-Range Minimum/Maximum Query (区间最小/最大值)
RMQ是一类询问区间最小/最大值的问题。这类问题一般分成两类:静态区间(无修改),动态区间(带修改)。对于动态区间查询最大/最小,我们显然可以用线段树来解决……那么对于静态区间查询最大/最小的问题,我们一般用ST算法解决。(显然这个我们也可以用线段树)这个算法相比于线段树来说有以下优点:·程序实现比较简单。·运行速度快,常数小。接下来为了解释方便,我们假...
2019-08-20 18:09:00
183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人