随手贴模板
吃货妍
努力学习中
展开
-
gcd+lcm+快速幂
gcd:int gcd(int x,int y) { return y==0?x:gcd(y,x%y); }lcm:x*y/gcd(x,y);01:快速幂02.LL fun(LL x,LL n,) 03.{ 04. LL res=1; 05. while(n>0) 06. { 07.原创 2016-03-28 20:51:08 · 495 阅读 · 0 评论 -
倍增lca
void dfs(int u,int f,int d){ deep[u]=d; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].to; if(v==f)continue; anc[v][0]=u; dfs(v,u,d+1); }}voi原创 2017-07-21 15:39:56 · 256 阅读 · 0 评论 -
Hrbust 2311(Swiss-system tournament)归并排序
Swiss-system tournament Time Limit: 2000 MS Memory Limit: 131072 K Total Submit: 36(6 users) Total Accepted: 7(4 users) Rating: Special Judge: No Description A Swiss-system tournament is a t原创 2017-04-29 12:02:55 · 325 阅读 · 0 评论 -
预处理C(n,m)
LL fac[1000005]; //阶乘LL inv_of_fac[1000005]; //阶乘的逆元LL qpow(LL x,LL n){ LL ret=1; for(; n; n>>=1) { if(n&1) ret=ret*x%mod; x=x*x%mod; } return r原创 2017-03-19 20:53:58 · 710 阅读 · 0 评论 -
FFT
设集合A,B,C. C=x+y(x∈A,y∈B)求C集合const double PI = acos(-1.0);struct complex{ double r,i; complex(double _r = 0,double _i = 0) { r = _r; i = _i; } complex operator +(c原创 2016-12-09 20:44:35 · 785 阅读 · 0 评论 -
SPFA
const int N=1005;int vis[N];int dis[N];int head[N<<1];int n,m,t,cont,x,y,z;int ans;struct node{ int to,next,cost;}edge[N*N*2];void add(int from,int to,int cost){ edge[cont].to=to;原创 2016-11-21 19:31:47 · 395 阅读 · 0 评论 -
RMQ(快速查询区间最值)
#include #include #include #include #include #define ll long longusing namespace std;const int maxn=5e4+10;int maxnum[maxn][20];int minnum[maxn][20];void RMQ(int num){ for(int j=1;j<20;原创 2016-10-07 18:02:17 · 314 阅读 · 0 评论 -
01字典树模板
#include unordered_map data[30];void update(int v, int c){//v是数,c取1 -1,1为加,-1为删。 for(int i = 0; i >i] += c;}int query(int x){ int cur = 0; for(int i = 29; i >= 0; i--){ cur ^=原创 2016-08-14 22:46:31 · 714 阅读 · 0 评论 -
还是主席树
Source CodeProblem: 2104 User: congrizheng Memory: 22656K Time: 1532MS Language: G++ Result: Accepted •Source Code#include #include #include #include #include #include #include #includ原创 2016-09-07 13:44:07 · 360 阅读 · 0 评论 -
大区间统计素数(最大1e11)
#includeusing namespace std;typedef long long LL;const int N = 5e6 + 2;bool np[N];int prime[N], pi[N];int getprime() { int cnt = 0; np[0] = np[1] = true; pi[0] = pi[1] = 0; fo原创 2016-09-19 21:25:57 · 717 阅读 · 0 评论 -
字典树模板
typedef struct dot { bool flag;//一个单词的结尾字母 dot *next[maxn]; int v;//经过这个字母的单词有几个 }T;dot root;dot *newNode(){ dot *temp=new dot; temp->v=1; temp->flag=false; for(int i=0;i<maxn;i++)原创 2016-08-13 16:17:29 · 359 阅读 · 0 评论 -
可修改主席树
#include #include #include#include #define lson l,m#define rson m+1,rusing namespace std;const int N=60005;int a[N],Hash[N];int L[N<<5],R[N<<5],sum[N<<5];int S[N],T[N];int n,m,tot;struct n原创 2016-08-31 19:15:00 · 504 阅读 · 0 评论 -
Dij+堆优化
struct rec{ int v,w;//终点,花费。};vector edge[N*2];//起点,注意清空struct cmp{ bool operator()(int a,int b) { return dis[a]>dis[b]; }};void add(int x,int y){ edge[x].push_back原创 2016-09-12 13:19:51 · 1857 阅读 · 0 评论 -
Floyd判圈算法
#include #include #include int main(){ int k1=k,k2=k; int ans=k; do { k1=next(n,k1); k2=next(n,k2); if(k2>ans) ans=k2; k2=next(n,k2);原创 2016-08-28 11:27:57 · 630 阅读 · 0 评论 -
线段树单标记,双标记
单标记(区间维护)#include #include #include #include #include #include #define LL long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define maxn 111111using namespace std;LL sum[maxn<<2];LL原创 2016-08-05 22:48:23 · 1107 阅读 · 0 评论 -
01 完全 多重 背包模板
void ZeroOnePack(int cost,int weight){ int v; for(v=V;v>=cost;v--) f[v]=max(f[v],f[v-cost]+weight);}void CompletePack(int cost,int weight){ int v; for(v=cost;v<=V;v++) f[v]原创 2016-08-02 13:38:29 · 445 阅读 · 0 评论 -
矩阵快速幂
struct Matrix{ ll m[sz][sz];};Matrix Mul(Matrix a,Matrix b){ Matrix c; memset(c.m,0,sizeof(c.m)); for(int i=0; i<sz; i++) for(int j=0; j<sz; j++) for(int k=0; k<原创 2017-07-19 19:19:07 · 177 阅读 · 0 评论