wenbao与模板

 1 #define LL long long
 2 //快速幂 a^p%Mod
 3 LL pow_mod(LL a, LL p, LL Mod){
 4     LL X = 1LL;
 5     if(a == 0) return 0;
 6     while(p){
 7         if(p&1) X = X*a%Mod;
 8         a = a*a%Mod;
 9         p >>= 1;
10     }
11     return X;
12 }
13 //扩展欧几里得
14 void gcd(LL a, LL b, LL& d, LL& x, LL& y){
15     if(!b) { d = a, x = 1, y = 0;}
16     else { gcd(b, a%b, d, y, x); y -= x*(a/b);}
17 }
18 //计算模n下a的逆
19 //第一种利用GCD
20 LL inv(LL a, LL n){
21     LL d, x, y;
22     gcd(a, n, d, x, y);
23     return d == 1 ? (x+n)%n : -1;
24 }
25 //第二种利用欧拉定理
26 //pow_mod(a, n-2, n)

KMP

 1 const int maxn = 1e5+10;
 2 int Next[maxn];
 3 int KMP(char* aim, char* str){
 4     memset(Next, 0, sizeof(Next));
 5     int num = 0, len = strlen(aim), Len = strlen(str);
 6     for(int i = 1; i < len; i++){
 7         int j = Next[i];
 8         while(j && aim[i] != aim[j]) j = Next[j];
 9         Next[i+1] = (aim[i] == aim[j]) ? j+1 : 0;
10     }
11     int j = 0;
12     for(int i = 0; i < Len; i++){
13         while(j && aim[j] != str[i]) j = Next[j];
14         if(aim[j] == str[i]) j++;
15         if(j == len) num++;
16     }
17     return num;
18 }

欧拉筛

 1 const int maxn = 1e5+10;
 2 int p[maxn], phi[maxn];
 3 bool vis[maxn];
 4 int Euler(int n){
 5     int i, j, k;
 6     phi[1] = 1;
 7     for (int i = 2; i < n; ++i){
 8         if (!vis[i]){
 9             p[cnt++] = i;
10             phi[i] = i - 1;
11         }
12         for (int j = 0; j < cnt && i * p[j] < n; ++j){
13             vis[i * p[j]] = true;
14             if (i % p[j]) phi[i * p[j]] = phi[i] * phi[p[j]];
15             else {
16                 phi[i * p[j]] = phi[i] * p[j];
17                 break;
18             }
19         }
20     }
21     return cnt;
22 }

输入输出外挂

 1 int read(){
 2     int x=0,f=1,ch=getchar();
 3     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
 4     while(ch<=‘9‘&&ch>=‘0‘){x=(x<<1)+(x<<3)+ch-‘0‘,ch=getchar();}
 5     return x*f;
 6 }
 7 void out(int x){
 8     if(x > 9) out(x/10);
 9     putchar(x%10+‘0‘);
10 }

测试时间

1 printf("%.3lf\n", (double)clock()/CLOCKS_PER_SEC);

 1 struct Node{
 2     ll x[16][16];
 3 };
 4 Node mul(Node xx, Node yy){
 5     Node X;
 6     for(int i = 0; i < d; ++i){
 7         for(int j = 0; j < d; ++j){
 8             X.x[i][j] = 0;
 9             for(int k = 0; k < d; ++k){
10                 X.x[i][j] = (X.x[i][j] + (xx.x[i][k]*yy.x[k][j])%m) % m;
11             }
12         }
13     }
14     return X;
15 }
16 Node q_m(Node A, ll x){
17     Node AAA;
18     for(int i = 0; i < d; ++i){
19         for(int j = 0; j < d; ++j){
20             AAA.x[i][j] = (i == j);
21             //printf("%lld ", AAA.x[i][j]);
22         }
23         //puts("");
24     }
25     while(x){
26         if(x&1) AAA = mul(AAA, A);
27         A = mul(A, A);
28         x >>= 1;
29     }
30     return AAA;
31 }

只有不断学习才能进步!

原文地址:https://www.cnblogs.com/wenbao/p/6439067.html

时间: 2024-10-13 13:31:24

wenbao与模板的相关文章

wenbao与后缀自动机(SAM)

引用大神模板 1 作者:后缀自动机·张 2 链接:https://zhuanlan.zhihu.com/p/25948077 3 来源:知乎 4 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5 6 struct SAM{ 7 static const int maxn = 300010 * 2; 8 struct node{ 9 node*nxt[26],*fail; 10 int len; 11 }; 12 13 node*root;int cnt; 14 node

wenbao与高斯消元

消元  高斯消元 1 typedef double Matrix[maxn][maxn]; 2 void gauss_elimination(Matrix A, int n){ 3 int i, j, k, r; 4 //消元过程 5 for(i = 0; i < n; ++i){ 6 //选一行r并与i行交换 7 r = i; 8 for(j = i+1; j < n; ++j){ 9 if(fabs(A[j][i]) > fabs(A[r][i])) r = j; 10 } 11 i

wenbao与网络流

最大流(推荐博客http://blog.csdn.net/mystery_guest/article/details/51910913) 不断增广 SAP模板 1 const int MAXN = 20010;//点数的最大值 2 const int MAXM = 880010;//边数的最大值 3 const int INF = 0x3f3f3f3f; 4 5 struct Node{ 6 int from, to, next; 7 int cap; 8 }edge[MAXM]; 9 int

wenbao与manacher

推荐博客:https://segmentfault.com/a/1190000003914228 ---------------------------------------------------- 模板 1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 using namespace std; 5 const int maxn = 1e6+10; 6 char str[2*maxn

Vue.js项目模板搭建

前言 从今年(2017年)年初起,我们团队开始引入「Vue.js」开发移动端的产品.作为团队的领头人,我的首要任务就是设计 整体的架构 .一个良好的架构必定是具备丰富的开发经验后才能搭建出来的.虽然我有多年的前端开发经验,但就「Vue.js」来说,仍然是个新手.所幸「Vue.js」有一个配套工具「Vue-CLI」,它提供了一些比较成熟的项目模板,很大程度上降低了上手的难度.然而,很多具体的问题还是要自己思考和解决的. 项目划分 我们公司的H5产品大部分是嵌套在手机客户端里面的页面.每个项目的功能

ac自动机基础模板(hdu2222)

In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image retrieval system. Every image have a long description, when users type some keywords to find the image, th

hdu 2966 In case of failure kdtree模板题

问求每个点距离平方的最小的点 kd-tree模板题…… 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(x) cerr<<#x<<"=="<<(x)<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int>

eclipse添加xml模板

//因为学javaee,中框架,,感觉配置文件好多, window-preferences-xml-xmlfiles-editor-templates-选中模板,-edit

POJ3528 HDU3662 三维凸包模板

POJ3528 HDU3662 第一道题 给定若干点 求凸包的表面积,第二题 给定若干点就凸包的面数. 简单说一下三维凸包的求法,首先对于4个点假设不共面,确定了唯一四面体,对于一个新的点,若它不在四面体内,为了让它进入凸包, 则对于所有凸包上的边,若边的一面是该点可以看到的而另一面看不到,则该点与该边构成的面要加入凸包. 模板代码非常清晰, #include<stdio.h> #include<algorithm> #include<string.h> #includ