acm之数学
slmady
学习记录
展开
-
hdu1134(卡特兰数)
这是一道简单的卡特兰数题,卡特兰序列:1,1,2,5,14,42,132,429,1430·············递推式f(n)=f(n-1)*(4n-2)/ (n+1) , 然后直接套用大数的模板代码如下:#include#include#include#include#include#include#include#include#include#i原创 2014-02-23 14:51:09 · 1505 阅读 · 0 评论 -
hunnu11483
题意:输入n和k,n个数字,[1,k] [k+1,2k] [2k+1,3k].....每k个数为一类,两种方案1:每次交换相邻的数字,使得每个数字在各自的类里;2: 同时移动所有的数字,是每个数字在各自的类里。 求两种方法的步数之差。解题思路:先考虑第二中方法,很容易求得ans2 。 关键是如何求ans1,首先把一个同一类中的数字初始化为一个相同的数,比如[1,2,3]->[0,0,0原创 2014-09-04 21:24:10 · 601 阅读 · 0 评论 -
hdu4920(矩阵 乘法)
题意:矩阵乘法,在乘的过程中每个元素都取模3在比赛时,我一直za原创 2014-08-07 22:25:47 · 553 阅读 · 0 评论 -
hdu4968(矩阵快速幂)
题意:给A、B矩阵,C = A*B,D = C^(N*N),求D中所有元素取模原创 2014-08-21 10:26:52 · 593 阅读 · 0 评论 -
hdu4961(因子和倍数)
题意:给n个数字,求每个数的左右两边离它最近的并且是它的倍数的乘积之和思路分析:按照题解的方法解,最坏时间复杂度为O(10^5 *sqrt(10^5)),时限是1s,理论上来说会超时,但运行结果只跑了171ms,搞不懂为什么思路是这样的,从左往右遍历求b[],从右往左遍历求c[],在遍历的过程中,用vis[]记录当前状态下,数字i的离它最近的倍数的位置。代码如下:原创 2014-08-22 16:26:12 · 616 阅读 · 0 评论 -
hdu4915(找规律)
题意:给定一个n进制的乘法表格,每个数字都映射成了另外一个数字,求是怎么映射的解题思路:可以特判0和1,然后就是找规律,对于每一行,2*j个数字的种类就是要求的那个数。注意用G++提交会超时,一定要用C++提交原创 2014-08-23 14:20:06 · 703 阅读 · 0 评论 -
poj2242(圆的周长)
题意:给定圆上3点,求圆的周长思路分析:外接圆半径r = (a*b*c)/(4*S),其中a,b,c为边长,S为三角形面积,L = 2*pi*r或者是利用圆心为中垂线的交点,求出圆心,然后再求半径也可以。原创 2014-08-25 19:58:19 · 979 阅读 · 0 评论 -
poj1305(本原勾股数组)
题意:求a*a + b*b = c*c (a 需要的知识点:本原勾股数组,本原勾股数组(PPT)是一个三元组(a,b,c),其中a,b,c无公因数,且满足a² + b² =c²。其它的勾股数组为(i*a)^2 + (i*b)^2 = (i*c)^2,思路分析:首先说明下这题数据非常水,即使用暴力也能过。但是暴力做没啥意义。这题的关键在求本原勾股数组s,t为奇数(s > t >= 1原创 2014-08-25 21:29:25 · 1820 阅读 · 1 评论 -
poj3070(利用矩阵快速幂加速递推式)
题意:求斐波拉契数的第n项,n 思路分析:暴力做肯定超时。这里有矩阵进行加速,很多递推的式子(DP)都可以转化成矩阵乘法来做。递推式为F(n) = F(n-1) + F(n-2) , 对于一个 1*2 的矩阵[f(n-2),F(n-1)],右乘上一个2*2 的矩阵A得到 2*1 的矩[F(n),F(n-1)] = [F(n-1)+F(n-2),F[n-1]A矩阵为1,11,0原创 2014-08-27 10:41:58 · 1501 阅读 · 0 评论 -
欧拉定理、费马小定理、逆元理论基础
在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,则:原创 2014-08-28 00:07:52 · 1081 阅读 · 0 评论 -
hdu4937(进制转换)
题意:给一个十进制n,在某种进制下它只包含3、4、5、6,问这样的进制有几种思路:进制转化的题目,如果直接暴力方法,那么肯定会超时。n = a0 + a1*x + a2*x^2 + a3*x^3 +.....+ an*x^n(x是基数) (n)10 = (an an-1 ...a0)x先考虑(n)10 = (a0)x的情况,a0 = n && x > 10, 那么只能是3,4,5,6, 而原创 2014-08-17 07:54:04 · 628 阅读 · 0 评论 -
hdu5015(矩阵优化)
题意:给一个n*m的矩阵,a[0][0--n]、a[0--n][0]已知,a[i][j] = a[i-1][j] + a[i][j-1]。思路分析:暴力会超时,所以可以用矩阵优化,时间复杂度为O(12*12*12*log(10^9))。注意到每一列都可以通过前一列递推得到,所以构造举证temp,使得A(i)*temp = A(i+1),现在要求第m列,A(0)*(temp^m) = A(m),原创 2014-09-14 20:13:47 · 1068 阅读 · 2 评论 -
hdu5105(求一元三次方程的最值)
f(x)=|a∗x3+b∗x2+c∗x+d|(L≤x≤R)原创 2014-11-16 09:19:25 · 1112 阅读 · 0 评论 -
hdu4407(容斥原理)
题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的原创 2014-10-05 21:17:54 · 609 阅读 · 0 评论 -
数论小结
1、2的2的n次方加1肯定是素数2、n是质数,那么2的n次方减1也是质数3、素数定理:定义π(x)为不大于x的素数个数,当x趋近∞,π(x) 和x/ln x的比趋近14、哥德巴赫猜想:一个大偶数(>=4)必然可以拆分为两个素数的和,虽然目前还没有人能够从理论上进行证明,不过我根据科学家们利用计算机运算的结果,如果有一个偶数不能进行拆分,那么这个偶数至少是一个上百转载 2014-08-20 01:06:21 · 754 阅读 · 0 评论 -
hdu4135(容斥原理入门题)
题意:求区间[a,b]中与n互质的数的个数,其中a,b原创 2014-07-30 20:25:12 · 503 阅读 · 0 评论 -
hdu3826(素数的应用——判断某个数的因子是否含有整数的平方数)
先求出2----1000 000之间的素数,放在prime数组内,如果n是含有某个整数的平方数,那么n能连续两次除以prime[ i ],现在从小到大,依次除,如果除完2----1000000的素数后,如果能连续被某个素数整除两次,输出no;否则 n=1,那么输出yes,n!=1,判断对n开平方是否为整数,如果是整数,输出no。n的范围到达10^18,而数组开1000 000的原因如下:100原创 2014-02-15 23:21:58 · 921 阅读 · 0 评论 -
hdu1576(扩展欧几里得算法exgcd)
按题意解得到方程组bx+9973y=n,其中x就是答案,也就是二元一次方程的解,因为b的范围已经确定,所以可以枚举b来解,但是我们不用这种方法方法,用扩展欧几里得算法解,主要是练习下这个算法。代码如下:#include#include#include#include#include#include#include#include#include#include#in原创 2014-02-16 16:46:08 · 804 阅读 · 0 评论 -
hdu2824(简单欧拉函数)
简单的欧拉函数,跟着模板写就可以了,题目要我们求[ a,b ]上的欧拉函数值的和。代码如下:#include#include#include#include#include#include#include#include#include#include#include#include#define eps 1e-9#define N 3000000#defin原创 2014-03-02 08:42:48 · 818 阅读 · 0 评论 -
hdu1019(求多个数的最大公倍数)
这题让我有点纠结,long long总是超时,只能用int,求大神帮我解决这个问题代码附在下面:原创 2014-04-29 21:48:52 · 545 阅读 · 0 评论 -
hdu(欧拉函数应用,用筛法的方法求phi数组)
题目输入一个n ,求phi[2]+phi[3]..............+phi[n]zh原创 2014-04-29 23:47:56 · 683 阅读 · 0 评论 -
hdu(求n!是否能被m整除)
个人觉得这是一道好题,yongd原创 2014-04-30 22:07:17 · 1020 阅读 · 0 评论 -
csu(欧拉函数+筛素数)
这真是一道好题啊!让我wa了那么多次,wa的原因是:原创 2014-04-29 23:17:18 · 684 阅读 · 0 评论 -
poj2773(欧拉函数的应用 或者 用容斥原理+dfs+二分)
题意:给出m和k,求与m互质的第k个数要用到的zh原创 2014-05-03 19:51:47 · 1331 阅读 · 0 评论 -
csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)
这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉这也是自己独自做扩展欧几里得算法的题目题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个只要用exgcd的模原创 2014-05-19 18:27:28 · 528 阅读 · 0 评论 -
hdu(素数的简单应用)
这是一道数论数论水题。求出10000以内的素数打表,然后用暴力解决代码ru原创 2014-04-28 20:43:36 · 568 阅读 · 0 评论 -
hdu4828(卡特兰数+逆元)
这题的前几个数据分别为1,2,5,14,32......................原创 2014-05-25 20:14:30 · 635 阅读 · 0 评论 -
hdu1071(积分求直线和抛物线构成的面积)
直线方程y = k*x + d;抛物线方程y = a(x-b)^2原创 2014-05-29 20:22:33 · 952 阅读 · 0 评论 -
hdu4869(逆元+求组合数)
//输入n,m,n表示翻牌的次数,m表示牌的数目,求经过n次操作后共有几种状态#include#include#include#include#include#include#include#include#include#include#include#include#define MOD 1000000009#define N 100000+5#define原创 2014-07-24 23:40:38 · 624 阅读 · 0 评论 -
hdu1542(扫描线求面积并)
题意:求多个矩形面积的并思路:扫描线算法,对每个矩形,用两条平行于x轴的线段表示,然后对每条线段的y排序,然后就用平行于x轴的扫描线从y = 0出往上扫,每次求面积。这里n只有100,所以可以用暴力解。原创 2014-11-08 00:17:24 · 610 阅读 · 0 评论