模板们。。。

注释

这是一个注释。恩。这些模板是给我自己复习用滴,所以只能在我愚笨的认知范围内尽量精妙了。。。。

所有模板默认有加基本头文件如下:

 

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
using namespace std;

 

每个模板都有效果,代码和警告,需要的还会配上其他辅助的东西。。

 

 

排序模板

#include<algorithm>
sort(a+1,a+n+1);

 

   柯嵩宇大神说sort在编译器中会判断n的大小并选择合适的排序方式,效果比qsort好。

 

文件读入读出

 

freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
不需要写freclose这种不存在的东东

 

   输出文件也是用freopen打开不是close。。。。。

 

快速读入

 

inline int read()  
{  
    int x=0,f=1;char ch=getchar();  
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}  
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}  
    return x*f;  
}  

 

并查集寻找祖宗与路径压缩

 

int find(int x){return x==father[x]?x:father[x]=find(father[x]);} 背吧

 

  黄巨大的代码一定是很精妙滴。虽然我看不懂。

 

快速读入

inline void readInt(int &x) {
        char cc; bool sign = false;
        for (cc = getchar(); cc<'0' || cc>'9'; cc = getchar()) if (cc=='-') sign = true;
        for (x = cc-'0',cc = getchar(); cc>='0' && cc<='9'; cc = getchar()) x = x*10+cc-'0';
        sign && (x=-x);
}
背吧。。

 

  cc是因为。。我原来的代码里面有个c了。。。

 

最大公因数

//单个数的...

(1)正常的
/*int gcd(int a,int b)
{
   while (b!=0)
  {
      int tmp=a%b;
      a=b;b=tmp;
  }
  return a;
}
*/
(2)精妙的
int gcd(int x, int y) { return y == 0 ? x : gcd(y, x % y); }
//多个数的...
O(nlog常数):
从第三个数开始,每个数和前面的数的gcd求gcd。。。

求gcd时间复杂度是O(log常数),线性扫描是O(n) ,所以如上。。

 

 

 

 

  

 

posted on 2014-06-25 17:42  seekdreamer  阅读(461)  评论(0编辑  收藏  举报