自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 整数三分模版

ll sanfen(int l,int r){ ll ans=1e18; while(l<r){ int m1=(2*l+r)/3; int m2=(2*r+l+2)/3; if(subans(m1)<subans(m2)){ //求最小值,最大值ans式子和符号都要改 ans=min(ans,subans(m1)); r=m2-1; }else{ ans=min

2020-08-04 22:54:06 682

原创 Prim 算法模版

例题CF 1245D复杂度O(n2)O(n^2)O(n2) , n为节点数int k[maxn];int c[maxn];int x[maxn],y[maxn];int dt[maxn]; //dt[i]表示节点i到起点的距离int n;bool vis[maxn];int fm[maxn];ll ct(int i,int j){ return 1LL*(k[i]+k[j])*(abs(x[i]-x[j])+abs(y[i]-y[j]));}void Prim(int s){

2020-07-12 15:41:51 241

原创 笛卡尔树模版

复杂度O(n)O(n)O(n)原理在这对于节点(k(序号),w(权重)):k 符合二叉搜索树性质,w符合堆性质例题在这int n,ind=0;int sta[maxn],lson[maxn],rson[maxn],w[maxn];void dkertree(){ for(int i=1;i<=n;++i){ int tmp=ind; while(ind&&w[sta[tmp]]>w[i]){ --tmp; } if(tmp) rson[sta

2020-06-11 20:13:26 169

原创 2-SAT模版

复杂度O(n+m)O(n+m)O(n+m)原理证明 侵删爆搜模版在这里 侵删const int maxn = 2e6+1000;vector g[maxn];int low[maxn],dfn[maxn];int scc[maxn];int sta[maxn];bool vis[maxn];int num=0,ind=0;int cnt=0;int n,p,M,m;int tol;int fid(int x){return p+x;}int yid(int x){retur

2020-06-08 10:59:01 142

原创 targan模版

强连通缩点,复杂度O(N+E)O(N+E)O(N+E) 。 ps:N个点,E条边vector<int> g[maxn];int dfn[maxn],vis[maxn],low[maxn]; //vis 是否在栈中int cnt=0;int stk[maxn]; int ind=0,stp=0;int ans[maxn]; //一个强连通块编号,按题目要求自行修改 void tarjan(int u){ dfn[u]=low[u]=++stp; vis[u]=1; //最好

2020-05-24 20:38:09 233

原创 判断一个度数序列是否可以构成简单无向图

如图片两个定理:图片来自_Celeste_的博客

2020-03-26 14:21:46 6952 1

原创 最大团模版

复杂度O(3m3)复杂度O(3^{\frac{m}{3}})复杂度O(33m​)int n,m; //m为节点个数int mpp[50][50];int st[50][50];int mans=0;int dp[50]; //dp[i] 表示为i到m的节点中最大团的节点数map<string,int> mp;void dfs(int stp,int num){ if(...

2020-02-29 21:01:56 155

原创 N次剩余模版

公式:xn≡amod  px^n \equiv a \mod pxn≡amodplong long quick_mod(long long a,long long b,long long mod){ long long ans=1; while(b){ if(b&1)ans=ans*a%mod; b>>=1; a...

2020-01-15 14:34:07 273

原创 线段树模版

先贴一个内存较大的模版吧int rtl[maxn<<2],rtr[maxn<<2],rtv[maxn<<2],lazy[maxn<<2];long long rtn[maxn<<2],lazy1[maxn<<2];void push_down(int p){ if(lazy[p]>1||lazy1[p]){ ...

2020-01-01 06:30:32 160

原创 Cayley公式

Cayley公式内容一个含有n个节点的完全图的生成树的个数为nn−2n^{n-2}nn−2,即带有标号的n个节点的无根树的个数为nn−2n^{n-2}nn−2证明思路Cayley公式可以根据Prüfer编码来证明。Prüfer编码给定带有标号的无根树,找出标号最小的叶子节点,将该点删掉同时写下与该点相邻节点标号,重复上述步骤直到剩下2个节点。最终写下来的标号序列为Prüfer编码。小...

2019-12-26 07:28:29 2350

原创 z_function模版

z[i]表示以i位置的子串前缀和原字符串前缀最大匹配个数void z_function(){ int l=0,r=0; for(int i=1;i<n;++i){ if(i<=r) z[i]=min(r-i+1,z[i-l]); while(i+z[i]<n&&s[i+z[i]]==s[z[i]]) ++z[i]; if(z[i]+i-1&...

2019-12-07 02:22:11 434

原创 高斯求线性同余方程解模版

int gauss(){ int equ=12,var=12; int i,j,k; int max_r,col; ll ta,tb,lcm; ll tmp; for(k=0,col=0;k<equ && col<var;++k,++col) { max_r=k; for(i=k+...

2019-10-27 03:19:46 354

原创 格雷码构造模版

int cnt=0; ans[cnt]=0; for(int j=0;j<i;++j){ for(int k=cnt;k>=0;--k){ ans[++cnt]=ans[k]^tmp[j]; } } for(int j=0;j<=cnt;++j){ cout<<ans[j]<<" "; } cout<<endl;...

2019-10-09 01:17:40 225

原创 并查集模版

int fa[maxn];int fin(int f){ return f==fa[f]?f:fa[f]=fin(fa[f]);}

2019-09-26 03:25:26 111

原创 主席树部分模版

const int maxn=1e5+100;int tol=0,rt[maxn*60],lson[maxn*60],rson[maxn*60],lz[maxn*60];ll v[maxn*60];void push_up(int x){ v[x]=max(v[lson[x]],v[rson[x]]);}void push_down(int x,int len){ if(lz[...

2018-12-13 19:39:26 165

原创 最大流Dinic

复杂度O(V2E)O(V^2E)O(V2E)const int maxn=2e3+100;const int INF=0x3f3f3f3f;ll n,m,tol,head[maxn];struct edge{ ll to,next,w;}a[maxn*10];void init(){ memset(head,-1,sizeof head); tol=1;}inl...

2018-12-06 19:46:06 251

原创 字符串hash 模版

const int P=131;const ll mod=1e7+7;char s[maxn],t[maxn];ll pre[maxn],pmod[maxn];void perwork(int len){ pmod[0]=1; pre[0]=0; for(int i=1;i&lt;=len;++i){ pre[i]=(pre[i-1]*P+t[i-1]-'a'+1)%mod;...

2018-12-02 17:17:36 209

原创 Lucas 模版

Lucas 模版Cnmmod&amp;ThinSpace;&amp;ThinSpace;mod(mod是素数)C_n^m \mod mod (mod 是素数)Cnm​modmod(mod是素数)ll Lucas(ll n,ll m){ if(!m) return 1; return C(n%mod,m%mod)*Lucas(n/mod,m/mod)%mod;}exLucas 模版C...

2018-10-23 15:35:57 279

原创 pell 方程

pell方程:x2−d∗y2=1x2−d∗y2=1 x^2-d*y^2=1我们知道它的所有解符合这个式子: xn+yn∗n−−√=(x1+y∗n−−√)nxn+yn∗n=(x1+y∗n)nx_n+y_n*\sqrt n =(x_1+y*\sqrt n)^n 那么以n=2n=2n=2为例: x2+y2∗n−−√=(x1+y∗n−−√)∗(x1+y∗n−−√)=x21+y21∗n+(x1...

2018-08-08 15:33:13 1184

原创 pell 方程求最小解模版

pell 方程 : x2−d∗y2=1x2−d∗y2=1x^{2}-d*y^2=1 最小整数解: x1=p,y1=qx1=p,y1=qx_1=p,y_1=qinline bool solve(ll n,ll &amp;amp;p,ll &amp;amp;q){ ll N, p1, p2, q1, q2, a0, a1, a2, g1, g2, h1, h2; g1 = q2 = p1 ...

2018-08-08 15:11:30 434

原创 连分数

连分数: pkqk=a1+1a2+1a3+1a4+…=[a1,a2,a3,a4…]pkqk=a1+1a2+1a3+1a4+…=[a1,a2,a3,a4…]\frac{p_k}{q_k}=a_1+\frac{1}{a_2+\frac{1}{a_3+\frac{1}{a_4+\dots }}}=[a_1,a_2,a_3,a_4\dots] 可以得到以下关系: ⎧⎩⎨⎪⎪p1p2pk=a1=a...

2018-08-06 15:34:41 2225

原创 无理数sqrt(n)连分数

连分数: a0+1a1+1a2+1a3+…a0+1a1+1a2+1a3+…a_0+\frac{1}{a_1+\frac{1}{a_2+\frac{1}{a_3+\dots }}} 所有2次无理数n−−√n\sqrt{n}都可以表示为循环连分数,并且循环节都是从第一位开始的。这里给出求n−−√n\sqrt{n} 的循环节模版:void init(ll n){ double ...

2018-08-06 15:13:44 1415

原创 数论四大定理

1.威尔逊定理p∣(p−1)!+1p∣(p−1)!+1p \mid(p-1)!+1 即 (p−1)!≡p−1≡−1modpp为质数(p−1)!≡p−1≡−1modpp为质数(p-1)!\equiv p-1 \equiv -1 \mod p \quad p 为质数 2.欧拉定理aϕ(p)≡1modpgcd(a,p)=1(1)(1)aϕ(p)≡1modpgcd(a,p)=1a^{\...

2018-07-29 17:48:07 2640

原创 Lindström–Gessel–Viennot lemma 定理

不相交路径: e(a,b)=∑P:a−&amp;amp;gt;bw(P)e(a,b)=∑P:a−&amp;amp;gt;bw(P) e(a,b)=\sum_{P:a-&amp;gt;b}w(P) M=⎡⎣⎢⎢⎢⎢⎢e(a1,b1)e(a2,b1)⋮e(an,b1)e(a1,b2)e(a2,b2)⋮e(an,b2)⋯⋯⋱⋯e(a1,bn)e(a2,bn)⋮e(an,bn)⎤⎦⎥⎥⎥⎥⎥M=[e(a1,b1)e(a1,b2)⋯e(a1,b...

2018-07-25 16:30:38 634

原创 拉格朗日插值 求等次幂和模版

这个就是拉格朗日插值简化的公式 f(n)=∑i=0k+1(−1)k−i+1f(i)∏i−1j=0(n−j)∏k+1j=i+1(n−j)i!(k+1−i)!f(n)=∑i=0k+1(−1)k−i+1f(i)∏j=0i−1(n−j)∏j=i+1k+1(n−j)i!(k+1−i)!f(n)=\sum_{i=0}^{k+1}(-1)^{k-i+1}f(i)\frac{\prod_{j=0}^{i-1}(...

2018-07-24 11:52:36 279

原创 伯努利求幂和模版

∑ni=1ik∑i=1nik\sum_{i=1}^n{i^k}=(n+B)k+1−Bk+1k+1(n+B)k+1−Bk+1k+1\frac{{(n+B)}^{k+1}-B^{k+1}}{k+1}

2018-07-20 17:15:49 319

原创 高斯求线性基模版

void cal() { for (int i = 0; i < n; ++i) for (int j = MAX_BASE; j >= 0; --j) if (a[i] >> j & 1) { if (b[j]) a[i] ^= b[j]; else {

2017-09-26 21:16:58 363

原创 字符串模拟乘法

string multi(string num1, string num2){ string res=""; int m = num1.size(), n = num2.size(); vector&lt;long long&gt; tmp(m + n - 1); for (int i = 0; i &lt; m; i++){ int a = nu...

2017-09-04 16:51:52 1550

原创 计算几何模版

const double eps=1e-8;int dcmp(double x){ if (fabs(x)&amp;amp;amp;lt;eps) { return 0; } else return x&amp;amp;amp;lt;0?-1:1;}struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y) {}};typedef

2017-08-22 19:34:31 387

原创 Dijkstra模版

struct Edge{ int from,to,dist; Edge(int u,int v,int d):from(u),to(v),dist(d){}};struct Dijkstra{ int n,m; vector<Edge> edges; vector<int> G[maxn]; bool done[maxn]; int d[ma

2017-08-20 20:38:41 332

原创 欧拉函数模版

ll phi(ll n) { ll i,rea=n; for(i=2;i*i<=n;++i) { if(n%i==0) { rea=rea-rea/i; while(n%i==0) n/=i; }

2017-08-19 19:58:26 340

原创 中国剩余定理模版

typedef long long LL;const int N = 1005;LL a[N], m[N];LL gcd(LL a,LL b){ return b? gcd(b, a % b) : a;}void exgcd(LL a, LL b, LL &x, LL &y){ if(b == 0) { x = 1; y = 0;

2017-08-16 19:41:13 303

原创 Manacher模版

char s[(int)1e5+100];char s_new[(int)2e5+100];int p[(int)2e5+100];int Init(){ int len = strlen(s); s_new[0] = '$'; s_new[1] = '#'; int j = 2; for (int i = 0; i < len; i++) {

2017-08-14 15:51:30 251

原创 圆的反演模版

Point inverse_Point(Point P,Point A,double r)//求A关于P反演{ Point O(0,0); Point PA=A-P; double len=r*r/dist(PA,O); Point A1=P+PA*(len/dist(PA,O)); return A1;}Circle inverse_Circle(Poi

2017-08-12 10:09:26 527

原创 fwt模版

fwt模版void FWT(int a[],int n,int _k){ for(int m=2;m<=n;m<<=1) for(int i=0;i<=n-1;i+=m) for(int j=0;j<=m/2-1;j++){ int t0=a[i+j], t1=a[i+j+m/2]; if

2017-08-07 13:21:06 315

原创 圆与多边形求交面积

const int N=2000+10;const double eps=1e-10;const double PI=acos(-1.0);int rnd;int dcmp(double x){ if(fabs(x)<eps)return 0; return x<0?-1:1;}struct Point{ double x,y; Point(){}

2017-07-31 16:41:54 580

原创 莫比乌斯函数模版

const int maxn=1e6;const int mod=1e9+7;bool Mark[MAXSIZE];int prime[maxn];bool vis[maxn];int cnt = 0;int mu[maxn];int sum[maxn];int g[maxn];void Init(){ memset(vis,0,sizeof(vis)); mu

2017-07-29 20:48:48 348

原创 整数拆分 生成函数 模版

int n=1e5+5,m;ll a[maxn],b[maxn];ll ans[maxn],tmp[maxn];void Init(){ int t=1000; for(int i=-1000;i<=1000;i++) tmp[i+t]=i*(3*i-1)/2; ans[0]=1; for(int i=1;i<n;i++) {

2017-07-28 18:17:07 887

原创 FFT 模版 和 INT128模版

#include #include #include using namespace std;typedef long long ll;const int maxn=15000+100;const ll M=131073ll,MOD=1000000007ll,P[3]={998244353ll,1005060097ll,950009857ll},G[3]={3ll,5ll,7ll},I

2017-07-04 16:11:32 682

原创 HDU 5484 Monitor the Alpacas 凸包+Dijkstra

题意 给你n个点  m个点  问m个点中最少几个 可以把 n个点围起来思路:先凸包一下,然后 把凸包的线存起来,枚举m个点可组成的线段是否在凸包外面,然后 枚举m个点 最短环用Dijkstra就可以了代码:#include #include #include #include #include #include #include using namespace std;

2017-07-01 20:44:06 470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除