码迷,mamicode.com
首页 > 其他好文 > 详细

【模板】OI基本模版

时间:2017-06-03 14:11:00      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:sea   span   logs   二分   arc   个数   code   返回   sqrt   

这里发一些基本的模版,就这样~

1. 0-1背包

int bag_01() { //01背包 
    for(int i = 1; i <= n; i++)
        for(int j = c; j >= w[i]; j--)
            f[j] = max(f[j], f[j-w[i]]+v[i]);
    return f[c];
}
//对于完全背包(物品不限):将第二个循环的顺序反向即可。 

2. 二分查找

//这是找最大
int Binary_Search(int Left, int Right) {
    while(Left <= Right) {
        int Mid = (Left + Right) / 2;
        if(check(Mid))
            Left = Mid + 1;
        else
            Right = Mid - 1;
    }
    return Left - 1;
}
//这是找最小
int Binary_Search(int Left, int Right) {
    while(Left <= Right) {
        int Mid = (Left + Right) / 2;
        if(check(Mid))
            Right = Mid - 1;
        else
            Left = Mid + 1;
    }
    return Right + 1;
}

3. 计算n的因子个数

int calc(int n){ //calc(n) : 计算n的因子个数 
    int ans=1, t;
    for (int i=2; i*i<=n; i++){
        for (t=0; n%i==0; n/=i)
            t++;
        ans*=t+1;
    }
    if (n>1) 
        ans*=2;
    return ans;
}

4. 最大公约数

int gcd(int a, int b) {
    return b ? gcd(b, a%b) : a; 
}
//gcd函数返回a和b的最大公约数(a>b) 最小公倍数=a*b/gcd(a,b) 

5. 最长公共子序列

int LCS() {
    for(int i = 1; i <= xl; i++) 
        for(int j = 1; j <= yl; j++)
            if(x[i] == y[j]) 
                f[i%2][j] = f[(i-1)%2][j-1]+1;
            else
                f[i%2][j]=max(f[(i-1)%2][j],f[i%2][j-1]);
    return f[xl%2][yl];
}

6. 筛法求素数

void prime(int n) { //筛法求素数表 
    for(int i = 2; i <= sqrt(n); i++)
        if(!p[i])
            for(int j = i+i; j <= n; j += i) p[j] = 1;
}
//p[i]=0:该数是素数;p[i]=1:该数不是素数 

7. 快速幂

int quickpow(int a, int b, int m){ //快速幂 求a^b%m的值     
    int t=1;
    while (b){
        if (b&1) t=t*a%m;
        b>>=1; a=a*a%m;  
    }
    return t;
}

8. 快速读入整数

inline void read(int& x){
    char c=getchar(); int f=1,num=0;
    for(;c<0||c>9;c=getchar()) if(c==-)f=-1;
    for(;c>=0&&c<=9;c=getchar()) num=num*10+c-0;
    x=num*f;
}

 

这些都是最基本的模版哦!如果有什么其他的有用的模版欢迎在评论区中提出哦!

【模板】OI基本模版

标签:sea   span   logs   二分   arc   个数   code   返回   sqrt   

原文地址:http://www.cnblogs.com/farway17/p/6936984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!