微积分基础知识
2013-07-15 08:12
127 查看
微积分基础知识
前言:在信息学算法竞赛中,常有些数学类问题需用到微积分,或用到微积分的算法(如母函数,HNOI2012排队),这里本人总结了一下竞赛中常用的微积分基础知识,供大家参考,有写得不好的地方请多多包涵,感谢学长帮助修改审校,若有错误请留言告诉我,谢谢!
辅助参考:
http://blog.csdn.net/u011400953/article/details/9325389 <普通物理中的数学基础>
http://blog.csdn.net/u011400953/article/details/9328067 <母函数的运用>
声明:该文章为纯手打(MathType工具辅助编辑公式),由于是新手,不便讲这些公式传上来,因此用在word下的截图,图片中有部分其他符号(如:回车号),请见谅。转载注明出处〈http://blog.csdn.net/u011400953〉
————————————————————————————————————————————
————————————————————————————————————————————
附:HNOI2012排队
方法:
代码:
<自己写的太烂,代码参考了http://www.cnblogs.com/evan-oi/archive/2012/05/04/2482835.html>
前言:在信息学算法竞赛中,常有些数学类问题需用到微积分,或用到微积分的算法(如母函数,HNOI2012排队),这里本人总结了一下竞赛中常用的微积分基础知识,供大家参考,有写得不好的地方请多多包涵,感谢学长帮助修改审校,若有错误请留言告诉我,谢谢!
辅助参考:
http://blog.csdn.net/u011400953/article/details/9325389 <普通物理中的数学基础>
http://blog.csdn.net/u011400953/article/details/9328067 <母函数的运用>
声明:该文章为纯手打(MathType工具辅助编辑公式),由于是新手,不便讲这些公式传上来,因此用在word下的截图,图片中有部分其他符号(如:回车号),请见谅。转载注明出处〈http://blog.csdn.net/u011400953〉
————————————————————————————————————————————
————————————————————————————————————————————
附:HNOI2012排队
方法:
代码:
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> using namespace std; #define MaxL 2000 const long long MOD=1000000000; struct Bignum { int len; long long a[MaxL]; void init() { } Bignum() { len=0; memset(a,0,sizeof(a)); } }; int n,m; Bignum ans1,ans2; void operator *= (Bignum &p,int x) { int tmp=0; for (int i=1;i<=p.len;++i) { p.a[i]=p.a[i]*x+tmp; tmp=p.a[i]/MOD; p.a[i]%=MOD; } if (tmp) p.a[++p.len]=tmp; } Bignum operator + (Bignum x,Bignum y) { int len=max(x.len,y.len); int tmp=0; for (int i=1;i<=len;++i) { x.a[i]=x.a[i]+y.a[i]+tmp; tmp=x.a[i]/MOD; x.a[i]%=MOD; } x.len=len; if (tmp) x.a[++x.len]=tmp; return x; } Bignum operator * (Bignum x,Bignum y) { Bignum p; p.len=0; for (int i=1;i<MaxL;++i) p.a[i]=0; for (int i=1;i<=x.len;++i) { int tmp=0; for (int j=1;j<=y.len;++j) { p.a[i+j-1]=p.a[i+j-1]+x.a[i]*y.a[j]+tmp; tmp=p.a[i+j-1]/MOD; p.a[i+j-1]%=MOD; } if (tmp) p.a[i+y.len]+=tmp; } int tmp=0; for (int i=1;i<MaxL;++i) { p.a[i]=p.a[i]+tmp; tmp=p.a[i]/MOD; p.a[i]%=MOD; } for (int i=MaxL-1;i>=1;--i) if (p.a[i]) { p.len=i; break; } if (!p.len) p.len=1; return p; } void write(Bignum p) { printf("%lld",p.a[p.len]); for (int i=p.len-1;i>=1;--i) printf("%09lld",p.a[i]); printf("\n"); } Bignum A(int n,int m) { Bignum p; p.len=1; p.a[1]=1; for (int i=0;i<m;++i) p*=(n-i); return p; } int main() { scanf("%d%d",&n,&m); if (n>=1 && n+3>=m) { ans1=A(n+3,m); ans1*=((n+1)*n); } if (m>=1 && n+3>=m) { ans2=A(n+2,m-1); ans2*=(2*(n+1)*m); } write(A(n,n)*(ans1+ans2)); return 0; }
<自己写的太烂,代码参考了http://www.cnblogs.com/evan-oi/archive/2012/05/04/2482835.html>
相关文章推荐
- 工具栏的基础知识(copy)
- 黑马程序员————————C#基础知识(一)
- 什么是Shell?Shell脚本基础知识
- 1.Hibernate基础知识
- jTable基础知识:画表格之前要做的事
- WPF基础知识
- java基础知识之 循环输出---欲罢不能“金字塔”
- java基础知识07
- Thrift基础知识汇总--------------(从官网资料中总结的)
- Java基础知识一
- 计算机10大基础知识点(一)
- Ionic 2基础知识之用户输入
- JAVA基础知识(J2SE)
- 重温Python基础1:基础知识
- 关于单链表的基础知识
- Linux基础知识
- Python基础知识之pyc是什么鬼?
- PHP----------基础知识了解
- c#基础知识20问
- 有关Mina基础技术知识介绍