acm模板
erge1998
华南师范大学计算机学院2016届学生
展开
-
串的最小表示
string smallestRepresation(string s){ int i,j,k,l; int N=s.length(); s+=s; for(i=0,j=1;j<N;){ for(k=0;k<N&&s[i+k]==s[j+k];k++); if(k>=N)break; ...转载 2018-09-10 12:53:55 · 140 阅读 · 0 评论 -
欧拉函数
直接上代码:#include <iostream>using namespace std;int euler(int n) { int res = n; for (int i = 2; i <= n; i++) { if (n % i == 0) { res = (1ll*res*(i-1))/i; ...原创 2019-01-31 23:39:21 · 107 阅读 · 0 评论 -
快速模幂,大数模小数
https://ac.nowcoder.com/acm/contest/330/E链接:https://ac.nowcoder.com/acm/contest/330/E来源:牛客网 精通程序设计的 Applese 叕写了一个游戏。在这个游戏中,有一个 n 行 m 列的方阵。现在它要为这个方阵涂上黑白两种颜色。规定左右相邻两格的颜色不能相同。请你帮它统计一下有多少种涂色的方法。由...原创 2019-01-29 22:43:38 · 287 阅读 · 0 评论 -
后缀数组与字符串匹配
直接贴模板:#include<bits/stdc++.h>using namespace std;const int MAX_N=1000005;int n,k;int Rank[MAX_N+1];int tmp[MAX_N+1];int sa[MAX_N+1];bool compare_sa(int i,int j){ if(Rank[i]!=Rank[j...原创 2019-02-16 09:51:40 · 319 阅读 · 0 评论 -
string字符串类型用scanf读入,printf输出
#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int main(){ string a; a.resize(100); //需要预先分配空间 scanf("%s", &a[0]); printf("%s\n...原创 2019-02-16 10:21:29 · 1037 阅读 · 0 评论 -
基于后缀数组的字符串匹配
#include<bits/stdc++.h>using namespace std;const int MAX_N=1000005;int n,k;int Rank[MAX_N+1];int tmp[MAX_N+1];int sa[MAX_N+1];bool compare_sa(int i,int j){ if(Rank[i]!=Rank[j])retur...原创 2019-02-16 12:08:47 · 222 阅读 · 0 评论 -
二维bit模板
#include<bits/stdc++.h>using namespace std;typedef long long ll;#define N 1100const int mod = 1000000007;int bit[N][N],n,m,a[N][N];int lowbit(int x){ return x&(-x);}void add(in...原创 2019-02-22 10:05:29 · 272 阅读 · 0 评论 -
哈希用于字符串匹配
下面的代码中用unsigned long long 运算的自然溢出来省掉取模的过程。#include<bits/stdc++.h>using namespace std;typedef long long ll;const unsigned long long ull;const ull B=100000007;bool contain(string a,string ...原创 2019-02-16 19:39:31 · 367 阅读 · 0 评论 -
一个milller_rabin模板
#include <iostream>#include <cstdlib>#include <stdio.h>#include <algorithm>#include <math.h>#include <stdlib.h>#include <iomanip>#include <cti原创 2019-02-20 19:35:55 · 122 阅读 · 0 评论 -
Manacher最长回文子串模板(kuangbin)
const int MAXN=110010;char ma[maxn*2];int mp[maxn*2];void manacher(char s[],int len){ int l=0; ma[l++]='$'; ma[l++]='#'; for(int i=0;i<len;i++) { ma[l++]=s[i]; ...原创 2019-03-26 20:38:38 · 299 阅读 · 0 评论 -
三分查找求极值
转自:https://blog.csdn.net/littlewhite520/article/details/70144763我们都知道 二分查找 适用于单调函数中逼近求解某点的值。如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点。下面的方法应该是三分查找的一个变形。如图所示,已知左右端点L、R,要求找到白点的位置。思路:通过不断缩小 [L,R] 的范围,无限逼近白点。...转载 2018-10-02 20:54:26 · 376 阅读 · 1 评论 -
收藏一个输入输出挂模板
//使用时记得在main函数前排加一句begin();#include <stdio.h>#include <string.h>#include <stack>namespace IO { const int MT = 10 * 1024 * 1024; /// 10MB 请注意输入数据的大小!!! char IO_BUF[MT];...原创 2018-09-05 14:02:26 · 87 阅读 · 0 评论 -
收藏一个有效的求组合数的模板
#define P 1000000007#include<bits/stdc++.h>using namespace std;int fac[200005],inv[200005];inline void Pre(int n){ int i; for(fac[0]=1,i=1;i<=n;++i) fac[i]=1ll*fac[i-1]*i%P; ...原创 2018-08-09 17:16:33 · 167 阅读 · 0 评论 -
O(1)快速乘与O(log)快速乘
//O(1)快速乘inline LL quick_mul(LL x,LL y,LL MOD){ x=x%MOD,y=y%MOD; return ((x*y-(LL)(((long double)x*y+0.5)/MOD)*MOD)%MOD+MOD)%MOD;}//O(log)快速乘inline LL quick_mul(LL a,LL n,LL m){ LL ...原创 2018-10-24 13:01:19 · 209 阅读 · 0 评论 -
收藏一个ST表模板
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int M,N,x,y;int Log2[100010],money[100010],st[100010][30...原创 2018-11-19 23:56:31 · 85 阅读 · 0 评论 -
收藏一个RMQ模板
int a[1100];int dp[maxn][20];void rmq_init(){ for(int i=0;i<n;i++) dp[i][0]=a[i]; for(int j=1;(1<<j)<=n;j++) for(int i=0;i+(1<<j)-1<n;i++){ ...原创 2018-11-19 22:21:36 · 125 阅读 · 0 评论 -
素数筛法
素数筛法听起来很高大上的算法,实际上算法思想却十分简单:对前面取得的素数,依次"去掉"取出的这个素数后面的所有该素数的倍数。最后剩下的素数表里面的就是要求的素数,效率很高。#include<iostream>using namespace std;const int MAX_N=100000000;int prime[MAX_N];//素数表bool is_prime[MA...原创 2018-05-01 23:26:27 · 121 阅读 · 0 评论 -
最小生成树问题:kruskal算法
struct edge(int u,v,cost;};bool comp(const edge& e1,const edge& e2){ return e1.cost<e2.cost;}edge es[MAX_E];int V,E;//下面是自定义好的并查集的实现int par[MAX_N];//父亲int rank[MAX_N];//树的高度voi...原创 2018-05-01 22:13:37 · 332 阅读 · 0 评论 -
收藏一个大数模板
https://blog.csdn.net/y990041769/article/details/20116995转载 2018-07-22 10:59:16 · 93 阅读 · 0 评论 -
FFT用于高效大数乘法(当模板用)
转载来源:https://blog.csdn.net/zj_whu/article/details/72954766#include <cstdio>#include <cmath>#include <complex>#include <cstring>using namespace std;const double PI(acos(...转载 2018-07-20 21:53:41 · 1272 阅读 · 0 评论 -
欧拉函数
//求欧拉函数值 O(n^0.5)int euler_phi(int n){ int res=n; for(int i=2;i*i<=n;i++){ if(n%i==0){ res=res/i*(i-1); for(;n%i==0;n/=i); } } if(n!=1)res=...转载 2018-08-22 20:00:40 · 186 阅读 · 0 评论 -
收藏一个bit模板使用实例
#include<bits/stdc++.h>using namespace std;typedef long long ll;#define MAX_N 1000000int bit[MAX_N+1],n=5;int a[6]={0,1,2,3,4,5};int sum(int i){ int s=0; while(i>0) { ...原创 2018-08-11 17:00:45 · 270 阅读 · 0 评论 -
线段树区间修改+区间最值查询模板
转自:https://blog.csdn.net/lycheng1215/article/details/72790106?utm_source=blogxgwz2#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <strin...原创 2019-04-30 00:48:08 · 1350 阅读 · 0 评论