数值&数论&数
laziercs
这个作者很懒,什么都没留下…
展开
-
hdu-4344-Mark the Rope-大数分解质因子模板
#include#include#include#include#include__int64 prime[]={2,3,5,7,11,13,17,19,23,29};#define TIME 15 //Miller测试次数__int64 gcd(__int64 a,__int64 b){return b==0?a:gcd(b,a%b);}原创 2012-08-29 13:06:22 · 739 阅读 · 0 评论 -
hdu 3547(Polya计数)
//根据Polya计数的原理,我们先要求出每个置换群中的循环的个数//这里有24个置换群,为什么是24个了,很容易想到,把每一个面当作正面并按一个方向(顺时针或逆时针)旋转4次,总共6个面,所以就是24个置换群了;//我们可以先对立方体的8个顶点编号,然后就可以暴力预处理出24置换群的循环个数了,最后就是用Polya的计数公式计数了,代码如下:#include#include原创 2013-08-13 13:20:34 · 803 阅读 · 0 评论 -
自己实现用FFT加速多项式计算
/* * FFT之所以能加速DFT的计算,得益于n次单位复数根的几个性质: * 1.消去引理 w(d*n,d*k)=w(n,k); * 1.折半引理 w(n,k)^2=w(n/2,k); * 2.求和引理,即:sum{w(n,k)^j}=0 (0 * 详见:算法导论第30章,p527~p535*/#include#include#include#include原创 2013-08-12 14:45:42 · 1635 阅读 · 0 评论 -
hdu 4686 (等比解法)
这题的正解是矩阵快速幂,但是在比赛的时候没有构造出矩阵,然后直接用数学的方法把这题ac了,方法如下:可以得出an和bn都是类等比数列,类等比数列暂且定义为等比数列之间的加减乘除组合后的数列,an,bn如下:an=A0*Ax^n+Ay*(Ax^(n-1)+Ax^(n-2)+......+Ax^1+Ax^0).(n>=1)bn=B0*Bx^n+By*(Bx^(n-1)+Bx^(n-原创 2013-08-22 12:53:38 · 825 阅读 · 0 评论 -
hdu 3939 (Sticks and Right Triangle)
//数论(勾股数组相关),在acdream 群里看到的实现代码如下:#include#include#include#includeusing namespace std;vector fac[1000001];int prime[100000],phi[1000001],m;void init(){ //预处理phi[] int i,j; m=0原创 2013-07-22 13:29:06 · 899 阅读 · 0 评论 -
hdu 4483(数论)
/* 这是一个经典的题目,以前遇到n范围都比较就小,可以直接枚举每一个长方形的两个对角点,最后答案就是 C(n*n,3)-2*n*C(n,3)-2*sum{sum{(n+1-i)*(n+1-j)*(gcd(i,j)-1)}}(1 然而这题的n范围比较大,直接枚举肯定不行,但是我们可以优化上面的这个公式; 第一次看到这题的时候,不会优化,到后面我做了下uva1原创 2013-06-30 23:06:18 · 951 阅读 · 0 评论 -
ZOJ3690Choosing number
/*题目:Choosing number题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3690题目大意:n个人站成一行,这儿有m个数字,1,2...m,每个人选择一个数字,但是如果相邻的两个人选择了同一个数字这个数字不能超过k,请问他们有多少种选择数字的方式? 解题思原创 2013-04-02 20:00:11 · 772 阅读 · 2 评论 -
SPOJ10649 Mirror Number(三进制回文)
/*题目:Mirror Number题目描述:A number is called a Mirror number if on lateral inversion, it gives the same number i.e it looks the same in a mirror. For example 101 is a mirror number while 100 is not原创 2013-03-17 16:31:51 · 936 阅读 · 0 评论 -
数值积分-(自适应辛普森法)
#include#includedouble F(double x){return log10(x);}//三点辛普森公式double simpson(double width,double fa,double fb,double fc) { return (fb+fa+4*fc)*width/6;}//自适应simpson公式递归过程double asr(double a原创 2013-02-22 16:31:22 · 4009 阅读 · 1 评论 -
自己写的高斯消元,也不知道对不对
#includedouble argu_matrix[300][300],x[300];//arguement matrix and x matrixint main(void){ int n,i,j,k; double sum; scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n+1;j++) scanf("%lf",&argu_ma原创 2012-08-29 13:20:55 · 1841 阅读 · 0 评论 -
hdu-4091
//参看了大神的解题报告,好题,体现了通过分析问题来对问题进行各种剪枝,优化已致程序以最优的算法运行;//解题思路:贪心的各种优化,先用最小公倍数优化,再用最小的次数来优化,最后时间的复杂度为sqrt(n); //代码如下:#include__int64 gcd(__int64 a,__int64 b){return b==0?a:gcd(b,a%b);}int main()原创 2012-09-22 10:47:51 · 483 阅读 · 0 评论 -
uva 12486-Space Elevator
//http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3930//Problem description:Space ElevatorChina is building a space elevator, which will allow the原创 2012-09-19 22:10:54 · 741 阅读 · 0 评论 -
hdu -4282
//二分x或y,其他的直接暴力枚举就可以了 #include#include#include__int64 p[51000][32];int main(){ int sum; __int64 x,y,z,k,s,e,mid; __int64 xx,kk,k1,k2; memset(p,0,sizeof(p)); kk=1; kk<<=32;原创 2012-09-11 16:56:19 · 638 阅读 · 0 评论 -
2012 ACM/ICPC Asia Regional Online Warmup-1003
/*http://acm.hdu.edu.cn/showproblem.php?pid=4259题意是:给定一个排列和一个特定的置换,最后问你最少要多少步置换才能回到原来的状态解题思路就是:找出置换中的各个置换回路的长度,答案就是各个置换回路的最小公倍数举个例子:排列:1 2 3 4 5 6置换:2 3 5 4 1 6那么第一个置换回路是1 2 3 5,长度为4,第原创 2012-08-28 18:59:27 · 560 阅读 · 0 评论 -
hdu 1402-傅里叶_大数相乘
#include#include#include#includetypedef struct vir{ double re,im; vir(){} vir(double a,double b){re=a;im=b;} vir operator +(const vir &b){ return vir(re+b.re,im+b.im);} vir operator原创 2012-08-29 12:57:57 · 1578 阅读 · 0 评论