摘要: 捡一捡已经快被遗忘的东西…… 最近正在准备实习,笔试什么的估计也能用到……加油! 1 inline int read() 2 { 3 int w=0,s=1; 4 char ch=getchar(); 5 while(ch<'0' || ch>'9') 6 { 7 if(ch=='-') s=-1; 阅读全文
posted @ 2024-03-29 16:10 RakanX 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 一、函数 1.lower_bound & upper_bound O(logN) lower_bound(a+1,a+n+1,x)-a //返回数组中第一个大于等于x的数的下标,不加“-a“则返回地址 upper_bound(a+1,a+n+1,x)-a //返回数组中第一个大于x的数的下标,不加“ 阅读全文
posted @ 2022-02-14 10:07 RakanX 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 零. 这是一篇特别草率的学习笔记。 一.关于莫队 一种离线的关于区间操作的算法。 一般莫队会和以下知识点一起使用: 1.分块思想。 2.离散化。 3.树链剖分/倍增,用于应付树上的(然而本蒟蒻写这篇博客时还不会,后续补充) 二.算法实现 1.SPOJ 3267 D-Query 暴力做法:记录每个数字 阅读全文
posted @ 2019-09-18 19:16 RakanX 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 这是一篇持续更新的博客。 不废话了直接上题吧。 1.洛谷 P2512 糖果传递 有n个小朋友坐成一圈,每人有Ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。 题解:最终结果可以计算,记为S。 我们假设所有传递都是向左传递(有向右的自然成为负数) 阅读全文
posted @ 2019-09-18 16:33 RakanX 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 一.关于manacher manacher算法用于求解一个字符串的回文子串半径长度。 它可以线性地求解对于字符串中的每一个字符,以它本身为中心的最长回文串的半径。 而且这个回文串的每一个以这个字符为中心的子串都是回文串。 这个算法的时间复杂度为O(n)。 二.回文子串长度的奇偶性带来的问题。 当一个 阅读全文
posted @ 2019-08-24 15:33 RakanX 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 一.关于扫描线 基础是求周长并和面积并的算法。 注意,扫描线是一条不存在的线。 假设有一条扫描线从一个图形的下方扫向上方(或者左方扫到右方),那么通过分析扫描线被图形截得的线段就能获得所要的结果。 二.扫描线求面积并(由于本人不会做图,以下图片均来自洛谷的题解) 我们看一下这个东西。 我们模拟一条扫 阅读全文
posted @ 2019-08-23 18:13 RakanX 阅读(5665) 评论(0) 推荐(2) 编辑
摘要: 一.最基础的线段树:支持区间加减修改,区间查询。 其实两个差分树状数组也可以搞定这个事情,不过还是线段树这样更加直观一点。 建议初步接触线段树的同学先看主程序再看函数,然后有需要可以手动模拟一下,有助于理解每个函数的作用~ #include<bits/stdc++.h> using namespac 阅读全文
posted @ 2019-08-22 19:27 RakanX 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 一.一维树状数组 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 ret 阅读全文
posted @ 2019-08-21 16:28 RakanX 阅读(113) 评论(0) 推荐(0) 编辑
摘要: RMQ是一类询问区间最小/最大值的问题。 这类问题一般分成两类:静态区间(无修改),动态区间(带修改)。 对于动态区间查询最大/最小,我们显然可以用线段树来解决…… 那么对于静态区间查询最大/最小的问题,我们一般用ST算法解决。(显然这个我们也可以用线段树) 这个算法相比于线段树来说有以下优点: · 阅读全文
posted @ 2019-08-20 18:09 RakanX 阅读(291) 评论(0) 推荐(0) 编辑