算法竞赛专题(1)-数学
本栏为icpc算法竞赛选手关于数学的技巧和题型总结,力图用独到的体会便于大家对复杂的数学问题进行充分理解。欢迎关注,更新中
__Lingyue__
微软亚洲研究院 实习生
展开
-
codeforces #383 (div2) B
关于异或的用法,和给定和找元素对儿同理。原创 2016-12-07 13:55:54 · 381 阅读 · 0 评论 -
codeforces #384 Vladik and fractions (构造算法)
Problem: 给定一个n,有三个不超过10^9的x,y,z,使得2/n = 1/x + 1/y + 1/z,后三个数是真分数。原创 2016-12-15 11:53:04 · 383 阅读 · 0 评论 -
hdu 1402 A * B Problem Plus 快速傅里叶变换
Problem:给定两个大整数,计算两者的积。原创 2016-09-26 11:24:25 · 654 阅读 · 0 评论 -
复数
复数的结构体模板原创 2016-09-26 11:25:15 · 512 阅读 · 0 评论 -
NTT FFT 数论变换 快速傅里叶变换 模板
关于傅里叶变换和数论变换原创 2016-09-29 12:34:42 · 1495 阅读 · 0 评论 -
Periodic Signal BeiJing 2016 区域赛
Problem:如何求卷积?原创 2016-09-29 17:49:47 · 791 阅读 · 0 评论 -
catalan 数列
catalan 的模板原创 2016-09-23 17:20:28 · 719 阅读 · 0 评论 -
n以内的互素表 最大公因数表
n以内的互素表,最大公因数表原创 2016-09-21 17:30:22 · 1247 阅读 · 0 评论 -
uva 1393 Highway
Problem: 给定一个m*n的点阵,求至少穿过两个点的直线有多少条?原创 2016-09-21 17:46:17 · 1028 阅读 · 0 评论 -
uva 11440 Help Mr. Tomisu 欧拉函数变种
Problem:给定正整数N和M,统计2和N!之间有多少个整数满足所有素因子都大于M,输出答案除以100000007的余数。原创 2016-09-15 17:47:43 · 677 阅读 · 0 评论 -
计算从[1,n]的素数个数
数组大小要大于根号下最大值原创 2016-09-19 18:58:20 · 1487 阅读 · 0 评论 -
uva 1363 Joseph's Problem 等差数列
Problem:输入正整数n和k(1~10^9),计算k mod i,i从1~n的和。原创 2016-09-15 14:51:01 · 543 阅读 · 0 评论 -
uva 10214 Trees in a wood 两个区间内的互素数对
Problem:|x| <= a,|y| <= b,在这个网格中除了原点都有树,同一条直线会互相遮挡,问站在原点能看到多少棵树?原创 2016-09-15 23:46:30 · 546 阅读 · 0 评论 -
uva 10213 How Many Pieces of Land 分割圆 高精度
Problem:一个椭圆上有N个点,把他们两两连接,问最多能划分成多少个部分。原创 2016-09-12 15:24:54 · 812 阅读 · 0 评论 -
高精度运算
1. 数据读入,加减乘除,阶乘,取余。2. 不支持负数。3. 乘除只支持大整数和小整数的运算。4. 包括了所有已知的算法竞赛当中的大数运算。5. 这应该是迭代比较完美的一代了,终于完成了高精度模板,继续加油!原创 2016-08-04 22:41:10 · 4298 阅读 · 0 评论 -
最大公约数 最小公倍数
最大公约数,最小公倍数模板原创 2016-08-04 21:38:45 · 8427 阅读 · 0 评论 -
uva 1262 Password 字典序第k个
1. 第k个可以利用枚举,枚举到第k个。2. 利用一个vis数组在相应的字母位置上标记来看是否有相同元素。原创 2016-09-07 21:16:23 · 921 阅读 · 0 评论 -
uva 1638 Pole Arrangement 递推
1. 递推就是要找到相互的联系。2. 分样本空间,找到各自的组合数,分类。原创 2016-09-08 12:05:27 · 511 阅读 · 0 评论 -
uva 1639 Candy 大数的对数处理 数学期望
1. 当排列组合数或者幂很大时可以利用对数计算,之后再用exp还原,保证一定的精度。2. 数学期望是每一个可能的值和相应的概率的乘积和,没有可能值可以设。3. 仔细读题,吃完最后一个糖果后不知道是否已经吃完,所以需要再选一次。4. %f用来输入float,输出float double.5. %lf 用来输入double,输出long double.原创 2016-09-08 16:54:00 · 713 阅读 · 0 评论 -
uva 10288 Coupons 数学期望
1. 计算期望可以从两个角度出发计算概率,第一个角度是直接计算,第二个角度是计算每增加一个的概率。2. 1+s+s^2+s^3+...+s^n n-->无穷,由等比数列前n项和公式为a1*(1-q^n)/(1-q);q是分数,n是无穷,所以为1/(1-q)3. 1+2p+3p^2+....np^(n-1),这个式子有两个特征,系数是递进的,抛开系数像是一个等比数列,那么我通过构造错位就可以构造出一个真正的原创 2016-09-09 10:34:09 · 828 阅读 · 0 评论 -
uva 11971 Polygon 连续概率
1. 都随机的点要通过假设先定下来,要考虑到假设时这种情况发生的种类数。2. 找到题意要求满足多边形的核心条件。原创 2016-09-09 18:00:20 · 678 阅读 · 0 评论 -
uva 10900 富翁 连续概率
1. 针对具体问题进行分类讨论,需要积分的可能通过分类和取平均值就对其进行了化简。2. 注意细节,比如当p0小于t的时候。3. 数学问题常用到递推,进阶的思想。原创 2016-09-09 18:42:26 · 741 阅读 · 0 评论 -
uva 10200 Prime Time 精度控制
1. 因为向下取整的运算,所以在做精度的题时一定要加1e+8。2. 打表可以控制在10^8。原创 2016-09-04 22:33:34 · 537 阅读 · 0 评论 -
uva 11827 Maximum GCD ungetc函数的使用
1. 数据量小,可直接枚举。2. 要注意最后EOF的处理。3. ungetc可以将字符返回缓冲区。原创 2016-09-04 01:14:54 · 533 阅读 · 0 评论 -
POJ 1061 青蛙的约会 同余方程
1. 刚开始不要处理数据,包括取绝对值等,保持原始数据,最后再进行正负处理,保证正确性。 2. 注意特殊值得处理,比如当m==n的时候。原创 2016-09-04 11:40:02 · 517 阅读 · 0 评论 -
LightOJ 1234 Harmonic Number 分布式打表
分布均匀的打表可以有效提高速度。输出使用%f,输入使用%lf。原创 2016-08-30 23:20:38 · 474 阅读 · 0 评论 -
LightOJ 1220 Mysterious Bacteria
数论中常用质因数分解,要从数的本质变化出发思考问题。p即是e[]的最大公因数,因为每一项都可以除这个最大公因数。负数的最大公因数不能是偶数,提前把2除尽。-2147483648用int取相反数还是-2147483648,因为会溢出,应该用longlong。原创 2016-08-31 19:05:39 · 336 阅读 · 0 评论 -
高精度取余
关于 a%b = c….r,b如果是负数,等同于正数。如果a是负数,等同于正数,但r为负。原创 2016-08-31 21:04:53 · 2365 阅读 · 0 评论 -
LightOJ 1138 Trailing Zeroes (III) 二分查找
线性变化可以想二分。末尾的0的个数只和5有关。原创 2016-09-02 11:49:07 · 377 阅读 · 0 评论 -
LightOJ 1197 Help Hanzo 求区间内素数的个数
数论题尽量都用longlong。先打出小部分素数,用这部分素数筛区间内的素数。原创 2016-09-02 20:49:58 · 445 阅读 · 0 评论 -
UVA 11426 GCD - Extreme (II)
同一对儿公因数可以作为k*(i,j)的公因数。找到递推关系。每一项多出来的值都可以打表来得到,每一个不同的因数都会造成不同的结果。原创 2016-09-03 22:29:48 · 478 阅读 · 0 评论 -
POJ 2115 C Looooops 同余方程 长整型常量要加LL
1. 长整型常量一定要加LL!!例如:1LL<< k;2. 同余方程用扩展欧几里得求解。3. 注意边界值特殊情况的考虑。原创 2016-09-04 00:16:06 · 888 阅读 · 0 评论 -
LightOJ1282 Leading and Trailing 大数取首尾
1. 任何一个数都可以转换为10^k,k是一个小数,k的整数部分决定了这个数的位数,小数部分决定了每一位的值,根据此可以快速找到前三位。2. 通过快速幂取模可以快速找到后三位。原创 2016-08-28 21:10:04 · 602 阅读 · 0 评论 -
LightOJ1236 Pairs Forming LCM 素因子分解
1. 约数,倍数,质因数等都应该联想素因子分解。2. 要考虑哪些情况应该排除,哪些不应该排除,细节的处理。3. 这道题当一对数相等时不判重,而只有一对这样的数,就是(n,n)。原创 2016-08-30 18:24:27 · 742 阅读 · 0 评论 -
hdu1005 超规模>>找规律>>有限次数循环
超规模>>算法优化 >>找规律>>规律变化 >>有限次数内循环>>找到变化范围原创 2016-04-17 16:48:44 · 5724 阅读 · 0 评论 -
欧拉函数 最大素因数 素数判断 素数表
1. 求欧拉函数(小于n的数中与n互质的数的数目)2. 求最大素因数3. 打素数表4. 判断一个数是否是素数5. 在一些题目中,需要先提前暴力出最大值,否则会超时。原创 2016-08-04 22:10:37 · 2993 阅读 · 0 评论 -
扩展欧几里得 模板
1. 扩展欧几里得模板。2. 求解两个元是整数的方程可以转换为取余消元枚举其中一个数。3. 复杂度和gcd一样是lgn。4. gcd(a,b)//a,b可以是任意整数,但是为了保证结果是正的,所以让a,b取绝对值. 显然gcd(a,b) == gcd(|a|,|b|).原创 2016-08-04 22:12:26 · 1324 阅读 · 2 评论 -
矩阵运算 快速幂
矩阵乘法必须满足第一个矩阵的列等于第二个矩阵的行。结果矩阵的行是第一个矩阵的行,列是第二个矩阵的列。矩阵乘法行列各元素相乘。矩阵快速幂利用幂的二分优化。利用运算符重载进行一系列更方便的操作。// 整数快速幂取模template <typename Type>long long ipow(Type x, Type n, Type mod){ long lo...原创 2016-08-04 22:34:56 · 1258 阅读 · 0 评论 -
uva12716 GCD等于XOR 筛法枚举
1. 注意题目的相关性质。例如aXORb = c 则 a XOR c = b;2. 筛法的时间复杂度是nlgn;3. 数论的题目可以最后打印解找规律,降低复杂度。4. k*10^8的复杂度可以接受。5. 若gcd(a,b) == a XOR b,则gcd(a,b) == a-b == a XOR b;原创 2016-08-05 00:05:26 · 708 阅读 · 0 评论 -
uva10375 选择与除法 唯一分解定理
1. 对数进行分解方便有效的约分。2. 唯一分解定理:一个数总是有素数的乘积构成。原创 2016-08-05 00:48:48 · 2668 阅读 · 0 评论