模板
wwt9b15bs
这个作者很懒,什么都没留下…
展开
-
【模板】三分
三分模板以LibreOJ10013曲线为例#include<cstdio>#include<algorithm>using namespace std;const int N=1e4+10;const double eps=1e-9;int t,n;struct curve{ double a,b,c;}c[N];double getans(int i,...原创 2018-11-08 18:17:50 · 154 阅读 · 0 评论 -
【模板】ST算法
void ST_prework(){ for(int i=1;i<=n;++i)f[i][0]=a[i]; int t=log(n)/log(2)+1; for(int j=1;j<t;j++) for(int i=1;i<=n-(1<<j);i++) f[i][j]=max(f[i][j-1],f[i+(1<<(j-1)...原创 2018-11-09 11:02:48 · 135 阅读 · 0 评论 -
【模板】归并排序求逆序对
void merge(int l,int mid,int r){ //合并a[l~mid]与a[mid+1,r] //a是待排序数组,b是临时数组,cnt是逆序对个数 int i=l,j=mid+1; for(int k=l;k<=r;k++) if(j>r||i<=mid&&a[i]<a[j])b[k]=a[i++]; els...原创 2018-11-09 09:51:48 · 324 阅读 · 0 评论 -
【题解】洛谷P3384【模板】树链剖分
以洛谷P3384为例大佬博客的讲解很清晰。#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;template&lt;typename tp&gt;inline void read(tp &amp;x){ x=0;int f=0;char ch=getchar(); while(ch&l原创 2018-11-06 08:23:12 · 158 阅读 · 0 评论 -
【模板】压位高精
摘自大佬博客#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;using namespace std;const int power=1;//每次运算的位数为10的power次方 const int base=10;//10的power次方 const int N=1001;char a[N]...转载 2018-10-24 23:07:02 · 373 阅读 · 0 评论 -
【模板】求欧拉回路
摘自李煜东《算法竞赛进阶指南》#include&lt;cstdio&gt;const int N=1e5+10,M=1e6+10;struct Edge{ int v,nx;}e[M];int n,m,hd[N],vis[M],tot,top,t,sta[M],ans[M];//模拟系统栈,答案栈 void add(int u,int v){ e[++tot].v=v; e[t...转载 2018-10-10 09:38:09 · 149 阅读 · 0 评论 -
【模板】splay
转自大佬博客天晓得我这个星际玩家有没有把哪里抄错//splay#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define re register#define Key_value ch[ch[rt][1]][0]const int N=5e5+1...转载 2018-10-09 09:33:09 · 112 阅读 · 0 评论 -
【模板】归并排序
突然发现自己不会打归并排序模板了QAQNOIP2018 rp++,score++初赛加油void mergesort(int a[],int l,int r){ if(l&amp;gt;=r)return; int mid=(l+r)/2; mergesort(a,l,mid); mergesort(a,mid+1,r); int c[r-l+1]; for(int i=l;i&amp;lt;...原创 2018-10-13 09:22:38 · 200 阅读 · 0 评论 -
【模板】快速排序
突然发现打不来快速排序了QAQvoid quicksort(int a[],int left,int right){ int i=left; int j=right; int temp=a[left]; if(left&amp;gt;=right)return; while(i!=j) { while(i&amp;lt;j&amp;amp;&amp;amp;a[j]&amp;gt;=temp)j--; i原创 2018-10-13 09:22:42 · 184 阅读 · 0 评论 -
【模板】字符串哈希
单哈希#include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const ll mod=1e9+7;const ll d=470001;char ss[10010];ll hx[10010];ll gethash(...原创 2018-11-09 11:13:28 · 104 阅读 · 0 评论 -
【模板】并查集
#include<cstdio>const int N=1e4+10;int n,m,fa[N];inline int Find(int x){return x==fa[x]?x:fa[x]=Find(fa[x]);}int main(){ //freopen("in.txt","r",stdin); scanf("%d%d",&n,&m); fo...原创 2018-11-09 14:55:46 · 148 阅读 · 0 评论 -
【模板】树状数组
//单点修改,区间求值 #include<cstdio>template<typename tp>inline void read(tp &x){ x=0;int f=0;char ch=getchar(); while(ch<'0'||ch>'9')f|=ch=='-',ch=getchar(); while(ch>='0'&...原创 2018-11-09 15:15:58 · 135 阅读 · 0 评论 -
【模板】位运算基本操作
来自李煜东《算法竞赛进阶指南》//取出整数n在二进制表示下的第k位(n>>k)&1//取出整数n在二进制表示下的第0~k-1位n&((1<<k)-1)//把整数n在二进制表示下的第k位取反n^(1<<k)//对整数n在二进制表示下的第k位赋值1n|(1<<k)//对整数n在二进制表示下的第k为赋值0n&(~...原创 2018-11-08 17:17:50 · 232 阅读 · 0 评论 -
【模板】快速幂与快速乘
快速幂不用多说,快速乘是基于快速幂的,主要用在直接乘会爆 long long 的情况下。//快速乘 inline ll qmul(ll a,ll b){ ll ret=0;a%=mod; for(;b;b>>=1) { if(b&1)ret=(ret+a)%mod; a=(a+a)%mod; } return ret;}//快速幂 inline l...原创 2018-11-08 16:57:34 · 143 阅读 · 0 评论 -
【模板】模拟退火
关于模拟退火,洛谷日报讲解的很好,我去那里学的(但是没学会qwq)以洛谷P1337[JSOI2004]平衡点/吊打XXX为模板#include<cstdio>#include<cstdlib>#include<ctime>#include<cmath>const int N=1e3+10;int n;const double MAX_...原创 2018-11-08 16:43:10 · 351 阅读 · 0 评论 -
模板整合(持续更新中)
之前发的模板太散了,搞一个合集篇来把散的模板整合到一起。原创 2018-11-08 10:20:37 · 324 阅读 · 0 评论 -
【模板】树状数组求逆序对
//采用树状数组求逆序对 离散化 #include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const int N=5e5+10;struct node{ int p,v;}q[N];int hx[N],tr...原创 2018-11-09 16:58:05 · 135 阅读 · 0 评论 -
【模板】分块
以洛谷P3396为例#include<cstdio>#include<iostream>using namespace std;const int N=15e4+10;int value[N],sum[410][410],n,m;void pre(){ for(int i=1;i<=n;i++) for(int j=1;j<...原创 2018-11-09 16:54:49 · 107 阅读 · 0 评论 -
【模板】扫描线
#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;#define lc o<<1#define rc o<<1|1const int N=1e5+10;int hx[N<<1],num;ll ans,len[N<&l...原创 2018-11-09 16:51:43 · 159 阅读 · 0 评论 -
【模板】线段树
//区间加,区间查询 #include<cstdio>#define lc (o<<1)#define rc (o<<1|1)const int N=1e5+10;typedef long long ll;int n,m;ll a[N],sum[N*4],lazy[N*4];void build(int o,int l,int r){ if(...原创 2018-11-09 16:28:13 · 127 阅读 · 0 评论 -
【模板】洛谷P3368树状数组2
题目链接题目描述如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数数加上x2.求出某一个数的值输入输出格式输入格式:第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。接下来M行每行包含2或4个整数,表示一个操作,具体如下:操作1: 格式:1 x y k 含义:将区间[x,y]内每...原创 2018-09-26 19:14:36 · 172 阅读 · 0 评论 -
【题解】洛谷P3811【模板】乘法逆元
#include<cstdio>const int N=3e6+10;int inv[N];int main(){ int n,p;scanf("%d%d",&n,&p); inv[1]=1; for(int i=2;i<=n;i++) inv[i]=1ll*(p-p/i)*inv[p%i]%p; for(in...原创 2018-10-03 14:33:23 · 212 阅读 · 0 评论 -
【模板】Dinic算法
摘自李煜东《算法竞赛进阶指南》#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<iostream>using namespace std;const int inf=1<<29,N=50010,M=300010;...转载 2018-10-11 09:47:31 · 399 阅读 · 0 评论 -
【模板】最小费用路算法
摘自刘汝佳《算法竞赛入门经典(第2版)》#include&lt;cstdio&gt;#include&lt;queue&gt;#include&lt;cstring&gt;#include&lt;vector&gt;#include&lt;algorithm&gt;using namespace std;const int max转载 2018-08-22 07:51:50 · 437 阅读 · 0 评论 -
【模板】Edmonds-Karp算法
摘自刘汝佳《算法竞赛入门经典(第2版)》#include&lt;cstdio&gt;#include&lt;queue&gt;#include&lt;vector&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;using namespace std;const int INF转载 2018-08-22 07:51:45 · 497 阅读 · 0 评论 -
【模板】最小生成树
转自大佬博客int mp[505][505],vis[505]int prim(int n){ int lowcost[505],sum=0; for(int i=1;i&lt;=n;i++) lowcost[i]=mp[i][1]; vis[1]=1; for(int i=1;i&lt;=n;i++) { int...转载 2018-08-13 07:01:34 · 306 阅读 · 0 评论 -
【模板】最长公共子序列
以洛谷P1439为例 n可以开到1e5……TLE+MLE(编译都过不了) 读入a数组后哈希一波,然后将b数组的值在哈希数组里找到对应值并替换,于是变成了求b数组最长上升子序列(玄学……)可以使用二分,时间复杂度o(nlogn)AC#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;cctype&gt;#include&lt原创 2018-08-13 07:03:29 · 189 阅读 · 0 评论 -
【模板】大整数类
六百多行代码真的要去记吗好慌啊 转载自大佬博客%%%#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <iostream>#include <cstring>using namespace std;#...转载 2018-08-12 18:00:39 · 131 阅读 · 0 评论 -
【模板】线段树
以洛谷P3372为例#include<cstdio>#include<cstring>#define lc (o<<1)#define rc (o<<1|1)#define mid (l+r>>1)typedef long long ll;const int N=1e5+5;ll a[N],sum[N*4],lazy...原创 2018-08-12 16:52:34 · 102 阅读 · 0 评论 -
【模板】扩展欧几里得算法
找出一对整数(x,y),使得ax+by=gcd(a,b)#include&lt;cstdio&gt;void exgcd(int a,int b,int &amp;d,int &amp;x,int &amp;y){ if(!b)d=a,x=1,y=0; else exgcd(b,a%b,d,y,x),y-=x*(a/b);}int main(){ retu...原创 2018-08-11 22:44:09 · 165 阅读 · 0 评论 -
【模板】欧拉函数
#include<cstdio>const int N=1e5+10;int phi[N];void phi_table(int n)//1~n中所有数的欧拉phi值 { for(int i=2;i<=n;i++)phi[i]=0; phi[1]=1; for(int i=2;i<=n;i++) if(!phi[i]) ...原创 2018-08-10 22:38:38 · 140 阅读 · 0 评论 -
【模板】线性筛
以洛谷P3383为例#include&lt;cstdio&gt;const int N=10000000;int prime[N],p;bool iscomp[N+1];int n,m;void primetable(){ for(int i=2;i&lt;=n;i++) { if(!iscomp[i])prime[p++]=i; f...原创 2018-08-19 09:49:18 · 89 阅读 · 0 评论 -
【模板】矩阵快速幂
以洛谷P3390为例#include&lt;cstdio&gt;#include&lt;cstring&gt;typedef long long ll;ll n,k;const ll mod=1e9+7;struct Matrix{ ll num[110][110];};Matrix Mul(Matrix mx,Matrix my)//矩阵乘法 { Matr...原创 2018-08-08 23:11:37 · 442 阅读 · 0 评论 -
【题解】洛谷P1226[模板]快速幂取模
题目链接#include&amp;amp;lt;cstdio&amp;amp;gt;using namespace std;int main(){ long long b,p,k; scanf(&amp;quot;%lld %lld %lld&amp;quot;,&amp;amp;amp;b,&amp;amp;amp;p,&amp;amp;amp;k); long原创 2018-09-02 06:54:30 · 198 阅读 · 0 评论 -
【模板】BST
摘自李煜东《算法竞赛进阶指南》//BST的建立 struct BST{ int l,r;//左右子节点在数组中的下标 int val;//节点关键码 }a[SIZE];//数组模拟链表int tot,root,INF=1&lt;&lt;30;int New(int val){ a[++tot].val=val; return tot;} void ...转载 2018-09-10 07:17:23 · 330 阅读 · 0 评论 -
【模板】主席树
转自大哥的博客 另一位大佬的博客讲解主席树讲的很好#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;const int N=1e6+10;int t,tot,n,m,sz;int a[N],b[N],ls[N],rs[N],sum[N],rt[N];//sum[o]记录的是该节点区间内出现的数...转载 2018-09-09 07:22:46 · 139 阅读 · 0 评论 -
【模板】分治法求平面最近点对
关于平面最近点对,大佬博客讲的很好。#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;climits&gt;#include&lt;cmath&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i+原创 2018-09-03 06:16:26 · 384 阅读 · 0 评论 -
【模板】求无向图中所有的割点&点双连通分量&缩点
#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)const int N=1e5+10;struct Edge{ int v,nx;}edge[N&lt;&lt;1];int dfn[N],low[原创 2018-08-26 10:11:26 · 604 阅读 · 0 评论 -
【模板】求无向图中所有的桥&求边双连通分量&缩点
#include&amp;amp;lt;cstdio&amp;amp;gt;#include&amp;amp;lt;algorithm&amp;amp;gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&amp;amp;lt;=(b);i++)const int N=1e5+10;struct Edge{ int v,nx;}edge[N&am原创 2018-08-26 08:47:23 · 1130 阅读 · 0 评论 -
【模板】快速排序
#include&lt;cstdio&gt;#include&lt;algorithm&gt;using namespace std;#define _rep(i,a,b) for(int i=(a);i&lt;=(b);i++)const int N=1e5+10;int a[N];void qsort(int l,int r){ int mid=a[(l+r)/2]; ...原创 2018-08-30 07:03:13 · 118 阅读 · 0 评论