我的一些define和include【每次直接补全】【有些代码里没有这部分内容看起来可能会不知道是啥】
2013-03-07 22:56
471 查看
IDX是算线段树下标用的,这样就可以写出只开2*N的线段树了
新加了一个rands函数~用于生成随机数【伪【其实就是生成了一个奇葩序列
【2013-05-01 加入bignumber】
新加了一个rands函数~用于生成随机数【伪【其实就是生成了一个奇葩序列
【2013-05-01 加入bignumber】
#include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<string> #include<map> #include<set> #include<queue> #include<stack> #include<ctime> #include<vector> #include<utility> using namespace std; #define INF (1<<30) #define EPS 1e-6 #define PI acos(-1) #define lowbit(x) ((x) & (-(x))) #define IDX(l,r) ((l)+(r) | (l)!=(r)) #define ABS(x) ((x)>0?(x):-(x)) #define SET(a,b) memset(a,b,sizeof(a)) #define NN 40 #define MM 10010 int rands() { static int x=1364684679; x+=(x<<2)+1; return x; } struct point { double x,y; int init(){return scanf("%lf%lf",&x,&y);} point operator + (point a) { point ret; ret.x=x+a.x; ret.y=y+a.y; return ret; } point operator - (point a) { point ret; ret.x=x-a.x; ret.y=y-a.y; return ret; } double operator * (point a) { return x*a.y-y*a.x; } double operator ^ (point a) { return x*a.x+y*a.y; } }; struct circle{ point o; double r; }; struct point3 { double x,y,z; int init(){return scanf("%lf%lf%lf",&x,&y,&z);} point3 operator + (point3 a) { point3 ret; ret.x=x+a.x; ret.y=y+a.y; ret.z=z+a.z; return ret; } point3 operator - (point3 a) { point3 ret; ret.x=x-a.x; ret.y=y-a.y; ret.z=z-a.z; return ret; } point3 operator * (point3 a) { point3 ret; ret.x=y*a.z-z*a.y; ret.y=z*a.x-x*a.z; ret.z=x*a.y-y*a.x; return ret; } double operator ^ (point3 a){ return x*a.x+y*a.y+z*a.z; } }; double xmult(point p0,point p1,point p2) { return (p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x); } point3 xmult3(point3 p0,point3 p1,point3 p2) { point3 ret; ret.x=(p1.y-p0.y)*(p2.z-p0.z)-(p1.z-p0.z)*(p2.y-p0.y); ret.y=(p1.z-p0.z)*(p2.x-p0.x)-(p1.x-p0.x)*(p2.z-p0.z); ret.z=(p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x); return ret; } double dot(point a,point b){ return a.x*b.x+a.y*b.y; } double dot3(point3 a,point3 b){ return a.x*b.x+a.y*b.y+a.z*b.z; } double dist(point a,point b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } double dist3(point3 a,point3 b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z)); } struct matrix { int n; int a[NN][NN]; void clear(){ memset(a,0,sizeof(a)); } void init(){ clear(); for(int i=1;i<=n;i++) a[i][i]=1; } matrix operator * (matrix b) { matrix c; c.n=n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { c.a[i][j]=0; for(int k=1;k<=n;k++) c.a[i][j]+=a[i][k]*b.a[k][j]; } return c; } matrix operator + (matrix b) { matrix c; c.n=n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) c.a[i][j]=a[i][j]+b.a[i][j]; return c; } void printmatrix() { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) printf("%d ",a[i][j]); printf("\n"); } } }; struct bignumber { int n; int a[MM]; void clear() { n=0; memset(a,0,sizeof(a)); } void init(char *s) { clear(); n=strlen(s); for(int i=0;s[i];i++) a[n-i]=s[i]-'0'; while (a ==0 && n>1) n--; } void init(int s) { clear(); if(s==0) { n=1; a[1]=0; return; } while (s) { a[++n]=s%10; s/=10; } } void output() { for(int i=n;i>0;i--) printf("%d",a[i]); printf("\n"); } int operator < (bignumber b) { if(n<b.n) return 1; if(n>b.n) return 0; for(int i=n;i>0;i--) { if(a[i]<b.a[i]) return 1; if(a[i]>b.a[i]) return 0; } return 0; } int operator == (bignumber b) { if(n!=b.n) return 0; for(int i=n;i>0;i--) if(a[i]!=b.a[i]) return 0; return 1; } }; bignumber operator + (bignumber a,bignumber b) { a.n=max(a.n,b.n); for(int i=1;i<=a.n;i++) { a.a[i]+=b.a[i]; a.a[i+1]+=a.a[i]/10; a.a[i]%=10; } if(a.a[a.n+1]>0) a.n++; return a; } bignumber operator - (bignumber a,bignumber b) { for(int i=1;i<=a.n;i++) { a.a[i]-=b.a[i]; if(a.a[i]<0) { a.a[i+1]--; a.a[i]+=10; } } while (a.a[a.n]==0 && a.n>1) a.n--; return a; } bignumber operator * (bignumber a,int b) { for(int i=1;i<=a.n;i++) { a.a[i]=a.a[i]*b+a.a[i-1]/10; a.a[i-1]%=10; } while (a.a[a.n]>=10) { a.n++; a.a[a.n]=a.a[a.n-1]/10; a.a[a.n-1]%=10; } return a; } bignumber operator / (bignumber a,int b) { int tmp=0; for(int i=a.n;i>0;i--) { tmp=tmp*10+a.a[i]; a.a[i]=tmp/b; tmp%=b; } while (a.a[a.n]==0 && a.n>1) a.n--; return a; } bignumber gcd(bignumber a,bignumber b) { int ans=0; bignumber c; while (1) { if(a.n==1 && a.a[1]==0) { c=b; break; } if(b.n==1 && b.a[1]==0) { c=a; break; } int flag=0; if(a.a[1]%2==0) a=a/2,flag++; if(b.a[1]%2==0) b=b/2,flag++; if(flag==2) ans++; if(! flag) if(a<b) b=b-a; else a=a-b; } while (ans--) c=c*2; return c; } int fastget() { char c; int ans=0; c=getchar(); int sign=1; while (! (c>='0' && c<='9' || c=='-')) c=getchar(); if(c=='-') sign=-1,c=getchar(); while (c>='0' && c<='9') { ans=(ans<<3)+(ans<<1)+c-'0'; c=getchar(); } return ans*sign; } void fastput(int x) { char s[12]; int a=0; if(x==0) puts("0"); else { if(x<0) putchar('-'),x=-x; while (x) { s[a++]=x%10+'0'; x/=10; } for(a--;a>=0;a--) putchar(s[a]); putchar('\n'); } } int main() { $0 return 0; }
相关文章推荐
- 前几天用VC++,获取SQL中的内容并保存,由于不是很熟悉,走了很多弯路,现在总结哈,希望能给需要的人一些帮助。 直接贴代码。
- [继续摘抄]一些好玩的话,部分内容与前面的有些重复
- LLVM Cookbook读书笔记(本书的缺点是直接展示大量Sample代码,对SSA/phi并没有怎么解释,TableGen部分也没讲清楚)
- 防止用户提交的表单内容里可能会写入一些恶意的代码
- eclipse里面的alt+/只是补全代码,没有提示框 的问题
- 《阿里巴巴Android开发手册》v1.0.1更新,优化部分内容和示例代码
- 把html页面的部分内容保存成新的html文件的jquery代码
- 《阿里巴巴Android开发手册》v1.0.1更新,优化部分内容和示例代码
- 常用的一些小程序集合的算法描述和部分代码(输出BMP,截取yuv,边界标记)
- MFC Combobox 输入内容自动补全并选中缺失部分(类似qq登录输入账号)
- 这个网站有些D3D的内容,对初学者很有一些帮助。。。
- Ribbon中 代码全部都是在Controller直接处理,没有再分层
- 加密部分内容(敏感信息,如密码,用户名等...)(PHP代码函数)
- DW 提示 代码浏览器没有为此选择内容显示的目标
- ideal+maven+scala配置spark的pom.xml文件内容,直接写spark代码
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(一)
- js 实现打印网页中定义的部分内容的代码
- 爱拼宝宝的界面还是很全面的。标准的电商首页,而且内容也很丰富,详情,参团评论等。 要下载的同学下载链接在最底部,先上图片和部分代码示例:
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(三)
- 补充部分官方文档里没有的Client Library以及代码提示Schema更新(二)