
模板
文章平均质量分 55
Fighter_sky
小蒟蒻啦~
展开
-
快读快写(以及一些其他神奇技巧)の小攻略
作为一个专业 fake快读快写压行宏定义类人,今天就来给大家讲一些有趣的小技巧原创 2021-09-09 11:34:56 · 4001 阅读 · 8 评论 -
普通莫队算法
莫队算法是由莫涛提出的算法。在莫涛提出莫队算法之前,莫队算法已经在 Codeforces 的高手圈里小范围流传,但是莫涛是第一个对莫队算法进行详细归纳总结的人。莫涛提出莫队算法时,只分析了普通莫队算法,但是经过 OIer 和 ACMer 的集体智慧改造,莫队有了多种扩展版本。(来自oiwiki)原创 2021-06-24 21:12:04 · 222 阅读 · 0 评论 -
线段树基础
终于完成了线段树的一些基础部分总结一下吧原创 2021-06-13 23:02:18 · 152 阅读 · 0 评论 -
线段树
只是板子#include<bits/stdc++.h>using namespace std;long long P;long long n,m;long long tr[400010],a[100010],lz[400010]={0},lz1[400010];void build(long long p,long long l,long long r){ lz1[p]=1; if(l==r){ tr[p]=a[l]; tr[p]%=P; return; } lo原创 2021-04-09 16:31:52 · 114 阅读 · 0 评论 -
迷宫问题
经典的迷宫问题两种解法1.DFS,没啥可说的代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>using namespace std;int m,n,a[1000][1000],sx,sy,fx,fy,vis[1000][1000],sum[100000][10],ifres,k;int dx[4] = {0,-1,0,1};int dy[4] = {原创 2021-04-08 20:01:44 · 116 阅读 · 0 评论 -
最短路
最近钻研些奇怪的最短路问题,被深深的恶心到了在此想和大家分享一下1.分层图最短路大多数都是删边形式出题,比如使某一条边免费,但是,有时二分最短路也会出现删边,这时就要看好它想要求什么:如果求删去k条边之后的最短路径,那么没跑了,就是你了!分层图!那么分层图问题如何解决呢?显然,对于不同的删除次数,我们可以将它想成神奇的平行空间,每个节点都对应着平行空间的节点,而对于删除一条边,我们可以想象成打开了一扇折跃门(集结部队法宝),从某扇折跃门到达目标地点的距离为0,这样,我们就可以在删除路径时直接通过折原创 2021-03-16 13:22:34 · 195 阅读 · 0 评论 -
ST表
原理:ST表类似树状数组,线段树这两种算法,是一种用于解决RMQ(Range Minimum/Maximum Query,即区间最值查询)问题的离线算法与线段树相比,预处理复杂度同为O(nlogn),查询时间上,ST表为O(1),线段树为O(logn)初始化:查询:代码:/*一维 #include <bits/stdc++.h>using namespace std;const int logn = 21;const int maxn = 2000005;long lo原创 2021-01-27 21:40:56 · 289 阅读 · 0 评论 -
矩阵快速幂求递推QAQ
矩阵快速幂(warning:本体多次WA):矩阵快速幂用途广泛,多用于递推求解,本文以肥波垃圾斐波那契数列为例题解:其实就是将矩阵运算套入到快速幂运算中,主要难点在于如何导出矩阵,如斐波那契数列中运算即为{1110}n−2∗{f 2 f 1 }\left\{ \begin{matrix} 1&1\\1&0\end{matrix} \right\}^{n-2}*\left\{\begin{matrix} f~2~\\f~1~\end{matrix原创 2020-11-28 17:10:36 · 300 阅读 · 0 评论 -
m(归并)sort
归并排序:时间复杂度:稳定的O(nlogn)一句话题解:将一个有序数列不断二分最终化为一个元素,再将每组有序数列有序合并时间复杂度证明:设复杂度为f(n)则根据归并原理可得f(n)=2(f(n/2))+n如此反复可得f(n)=2k*f(n/2k)+kn当且仅当n/2k=1时,归并排序停止此时k=logn即f(n)=nlogn即O(nlogn)代码#include<bits/stdc++.h>using namespace std;int n,a[101],b[1原创 2020-11-22 23:54:01 · 301 阅读 · 0 评论 -
高精度计算
重载运算符方面没完全明白,还需要理解重载运算符#include <bits/stdc++.h>using namespace std;const int maxn = 1000;struct bign { int d[maxn], len; void clean() { while (len > 1 && !d[len - 1]) len--; } bign() { memset(d, 0,原创 2021-01-18 11:51:23 · 173 阅读 · 1 评论 -
树状数组
原理:如图:黑色数组代表原来的数组(下面用A[i]代替),红色结构代表我们的树状数组(下面用C[i]代替),发现没有,每个位置只有一个方框,令每个位置存的就是子节点的值的和,则有C[1] = A[1];C[2] = A[1] + A[2];C[3] = A[3];C[4] = A[1] + A[2] + A[3] + A[4];C[5] = A[5];C[6] = A[5] + A[6];C[7] = A[7];C[8] = A[1] + A[2] + A[3] + A[4] + A[原创 2021-01-27 21:18:17 · 148 阅读 · 0 评论