
算法模板
算法经典模板
辉小歌
九局下半转啊转,我把帽子反戴,还在期待逆转。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二分的几个模板
模板一: 找到x最开始的下标while(l<r){ int mid=l+r>>1; if(a[mid]>=x) r=mid; else l=mid+1;}模板二: 找到x最末尾的下标 while(l<r){ int mid=l+r+1>>1; if(a[mid]<=x) l=mid; else r=mid-1;}模板三: 找到严格大于x的下标while(l<=r){ int mi原创 2021-10-28 11:01:55 · 135 阅读 · 0 评论 -
P3373 【模板】线段树 2【区间乘/加 区间查询】
https://www.luogu.com.cn/problem/P3373#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int N=1e5+10; int n,m,p;int w[N];struct node{ int l,r; int sum,add,mul;}tr[N*4];void pushup(int u){ tr[u].sum=(tr[u<<.原创 2021-10-26 23:07:09 · 192 阅读 · 0 评论 -
P3372 【模板】线段树 1【区间加 / 区间和】
https://www.luogu.com.cn/problem/P3372#include<bits/stdc++.h>using namespace std;const int N=1e5+10;typedef long long int LL;int n,m;int w[N];struct node{ int l,r; LL sum,add;}tr[N*4];void pushup(int u){ tr[u].sum=tr[u<<1].sum+tr.原创 2021-10-26 23:03:30 · 208 阅读 · 0 评论 -
P3374 【模板】树状数组 1
https://www.luogu.com.cn/problem/P3374#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int N=1e5*5+10;LL tr[N],a[N],n,m;int lowbit(int x){return x&(-x);}void add(int x,int c){ for(int i=x;i<=n;i+=lowbit(i)) t.原创 2021-10-22 21:06:13 · 120 阅读 · 0 评论 -
P4549 【模板】裴蜀定理
https://www.luogu.com.cn/problem/P4549#include<bits/stdc++.h>using namespace std;int gcd(int a,int b){return b?gcd(b,a%b):a;}int a[100005];int main(void){ int n; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=a[0]; for(int .原创 2021-10-22 14:58:04 · 200 阅读 · 0 评论 -
P5367 【模板】康托展开
https://www.luogu.com.cn/problem/P5367#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int N=1e6+10;;const int mod=998244353;LL f[N],tr[N],n;void init()//预处理阶乘{ f[0]=1; for(int i=1;i<N;i++) f[i]=f[i-1]*i%mod;}.原创 2021-10-22 14:26:14 · 139 阅读 · 0 评论 -
P1177 【模板】快速排序
https://www.luogu.com.cn/problem/P1177#include<cstdio>#include<iostream>#include<algorithm>using namespace std;const int N=1e5+10;int a[N];void quick_sort(int l,int r){ if(l>=r) return ; int i=l-1,j=r+1,x=a[l+r>>1]; w.原创 2021-10-22 13:41:46 · 203 阅读 · 0 评论 -
P3811 【模板】乘法逆元
https://www.luogu.com.cn/problem/P3811#include<bits/stdc++.h>using namespace std;const int N=1e6*3+10;long long int inv[N],n,p;void init(){ inv[1]=1; for(int i=2;i<=n;i++) inv[i]=(p-p/i)*inv[p%i]%p;}int main(void){ cin>>n>>.原创 2021-10-22 13:34:10 · 124 阅读 · 0 评论 -
P3367 【模板】并查集
https://www.luogu.com.cn/problem/P3367#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int p[N],n,m;int find(int x){ if(x!=p[x]) p[x]=find(p[x]); return p[x];}int main(void){ cin>>n>>m; for(int i=1;i<=n;i++) .原创 2021-10-22 13:18:58 · 118 阅读 · 0 评论 -
P5788 【模板】单调栈
https://www.luogu.com.cn/problem/P5788#include<bits/stdc++.h>using namespace std;const int N=1e6*3+10;int a[N],n,ans[N];stack<int>st;int main(void){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=n;i>=1;i--) {.原创 2021-10-22 13:17:45 · 214 阅读 · 0 评论 -
P2197 【模板】nim 游戏
https://www.luogu.com.cn/problem/P2197#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int a[N],n;int main(void){ int t; cin>>t; while(t--) { cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int ans=0; for(i.原创 2021-10-22 10:59:28 · 193 阅读 · 0 评论 -
P3812 【模板】线性基
作用:可以快速的求出查询异或最值查询k小值本题模板针对于快速的查询出一个序列的最大异或和https://www.luogu.com.cn/problem/P3812#include<iostream>#include<algorithm>using namespace std;const int N = 1e5 + 10;long long n, p[N], a[N], cnt;void add(long long v){ for(int i =原创 2021-10-22 10:47:02 · 153 阅读 · 0 评论 -
P3805 【模板】manacher 算法【马拉车】
快速的求出一个字符串中最长的回文串的长度https://www.luogu.com.cn/problem/P3805#include <iostream> #include <cstring>#include <algorithm> using namespace std;char s[20000000+10];char s_new[20000000+10];int p[20000000+10];//p[i] 表示以 i 为中心的最长回文的半径//原创 2021-10-21 22:38:41 · 297 阅读 · 0 评论 -
P3865 【模板】ST 表【又称RMQ】
st表的作用是可以快速的得到区间内的一个最大值,不过它是静态的,即一旦初始化不能修改。https://www.luogu.com.cn/problem/P3865#include<bits/stdc++.h>using namespace std;const int N=200010,M=21;int n,m;int w[N];int f[N][M];void init()//初始化{ for(int j=0;j<M;j++) for(int i=1;i+(1&l原创 2021-10-21 22:17:41 · 186 阅读 · 0 评论 -
P3385 【模板】负环
https://www.luogu.com.cn/problem/P3385这个和普通的判负环有点区别。普通的判负环是判断有没有负环即可。这个的判负环是从1出发的负环。故得将距离初始化为无穷,然后只让1入队#include<bits/stdc++.h>using namespace std;const int N=1e5*2+10;int st[N],cnt[N],dist[N],t,n,m,p[N];int h[N],e[N],w[N],ne[N],idx;queue<.原创 2021-10-21 21:17:59 · 267 阅读 · 0 评论 -
P3378 【模板】堆
https://www.luogu.com.cn/problem/P3378#include<bits/stdc++.h>using namespace std;priority_queue<int,vector<int>,greater<int>>heap;int main(void){ int n; cin>>n; while(n--) { int op; cin>>op; if(op==1) { .原创 2021-10-21 20:25:36 · 182 阅读 · 0 评论