ACM
文章平均质量分 81
geometry visibility
还在学习中
展开
-
【HDU1166】敌兵布阵【两种AC解法:线段树、BIT】
题目描述:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。 中央情报局要研究敌人究竟演习什么...原创 2018-05-15 15:24:00 · 154 阅读 · 0 评论 -
【ICPC模板】卡迈克尔函数
目录卡迈克尔函数卡迈克尔数卡迈克尔函数定义函数λ(n)为:当n为1, 2, 4或奇质数的幂、或奇质数的幂的二倍时,这一函数的函数值等于n的欧拉函数值;当n为2、4之外的2的幂时,这一函数的函数值等于n的欧拉函数值的一半。这一函数满足:欧拉定理与费马小定理都是此式的特殊情况。 卡迈克尔数卡迈克尔数都是伪素数,最小的卡迈克尔数是561。它满足费马小定...原创 2019-02-13 00:01:35 · 2105 阅读 · 0 评论 -
【ICPC模板】取模逆元(模反元素)
目录取模逆元(模反元素)互素情形非互素情形取模逆元(模反元素)互素情形抽象代数中的逆元指的是,对于现有的一个集合S以及定义在其上的二元运算R,任意元素与其逆元进行这个运算后可以得到单位元。取模逆元的条件定义在同余式的乘法下,即对于两个整数a和b,如果有:则将b称作a的逆元,同时a也是b的逆元。取模逆元常常用在计算取模表达式时有除法的情况,因为取模运算对除法不...原创 2019-02-13 00:02:00 · 2614 阅读 · 0 评论 -
【ICPC模板】欧拉线性筛素数法
时间复杂度O(n),生成的素数紧密存放在prime数组中,primepos是它的元素个数。注意:if(!(i % prime[j]))保证每个数仅被其最小的质因数筛去,并且保证j不会超过当前已找出的素数的个数。const int LIM = 1e5 + 10; /* The limit of number to be test */int prime[LIM / 3];b...原创 2019-02-13 00:02:09 · 170 阅读 · 0 评论 -
【ICPC模板】威尔逊定理
若p是素数,则(p – 1)!与p – 1即-1模除p同余。等价的说法是:如果p是素数,则(p – 1)! + 1能被p整除。值得注意的一点是,这个定理的逆命题,即如果对于一个数x,满足条件(x – 1)! + 1可以被x整除,那么x是素数。综上,威尔逊定理给出了判定一个数是否是素数的充要条件,但是因为阶乘函数值的增长非常快,所以使用这个定理来判断一个数的素性会比较低效。...原创 2019-02-14 15:54:25 · 469 阅读 · 0 评论 -
【ICPC模板】最小质因子
最小质因子欧拉线性筛打表实现原理:欧拉线性筛素数法,每个数仅使用其最小素因数筛去。#include <iostream>using namespace std;inline int mini(int a, int b) {return a < b ? a : b;}// 使用欧拉线性筛打最小质因子表const int LIM = 1e6 + 10...原创 2019-02-14 15:54:36 · 2056 阅读 · 0 评论 -
【ICPC模板】Miller-Rabin Primality Test(米勒-罗宾随机素性测试)
目录Miller-Rabin Primality Test(米勒-罗宾随机素性测试)静态素数证据表实现(非随机数实现)使用Java大数类判断素数Miller-Rabin Primality Test(米勒-罗宾随机素性测试)静态素数证据表实现(非随机数实现)函数MillerRabin(LL n, LL a)为一次米勒-罗宾测试结果,true表示测试数n有3/4的把握为素数,...原创 2019-02-14 15:54:46 · 563 阅读 · 0 评论 -
【ICPC模板】欧拉函数
目录欧拉函数质因数分解实现(适用于单次求值)打表实现欧拉函数的性质偶数性质 欧拉函数质因数分解实现(适用于单次求值)含义:小于n且与n互素的正整数个数。积性:如果gcd(n, m) = 1,则求值公式:特别地:注意:此实现需要提前调用euler()筛素数函数代码:#include <iostream>#in...原创 2019-02-13 00:01:49 · 169 阅读 · 0 评论 -
【ICPC模板】σ因数和函数
含义:σ(n)表示从1到n(包含)的所有n 的因数之和。积性:如果gcd(n, m) = 1,有σ(nm) = σ(n) * σ(m)求值公式:特别地:代码:#include <iostream>using namespace std;const int LIM = 1e7;int prime[LIM];int pos;bool notPri...原创 2019-02-14 15:54:56 · 712 阅读 · 0 评论 -
【ICPC模板】高精度平方根
牛顿迭代法实现公式:核心:求与横坐标交点求导:牛顿迭代公式:特别地:上述公式求解num的平方根。Java代码:public static BigDecimal sqrt(BigDecimal b, BigDecimal eps) { BigDecimal crt = new BigDecimal(b.toString()); Big...原创 2019-02-13 00:01:25 · 213 阅读 · 0 评论 -
【ICPC模板】整数快速模幂法(逐次平方法)
LL fastPowMod(LL base, LL p, LL mod) { LL ret = 1; base %= mod; do { if (p & 1) ret = ret * base % mod; base = base * base % mod; } while (p >>= 1); retu...原创 2019-02-14 15:55:31 · 245 阅读 · 0 评论 -
【ICPC模板】康托展开
由一个排列计算它是全排列中的第几个排列的方法。公式中x!表示x的阶乘,如果将排列元素写成一行,则a[n]表示从右向左数的第n个数,在其左边没有出现过且比当前数小的数的个数。如3 5 2 1 4中,比3小的数有2和1,一共2个,则a[5] = 2;到5时,比5小的且没有在它左边出现过的数有1, 2, 4,一共3个,则a[4] = 3……可以发现对于字典序最小的排列如1 2 3 4 5...原创 2019-02-13 00:01:03 · 370 阅读 · 0 评论 -
【ICPC模板】扩展欧拉定理
如下图所示,一般用来优化模幂运算,减少运算次数。原创 2019-02-13 00:00:52 · 368 阅读 · 0 评论 -
【ICPC模板】欧拉定理
费马小定理是欧拉定理的一个特殊情况,欧拉定理如下:其中φ(n)是n的欧拉函数值,表示小于n的正整数中满足gcd(n, x) = 1的数x的个数,可以理解为小于n且与n互素的整数的个数,需要特别注意整数1也满足与n的最大公约数为1的条件,因此它也被计数在内。...原创 2019-02-13 00:00:44 · 527 阅读 · 0 评论 -
ACM-ICPC模板整理
备注其一:正在整理中,内容不全,部分代码测试次数较少或还未在OJ上尝试,可能会有代码不健全的情况发生。备注其二:部分图片来自百度百科、wiki百科。备注其三:CSDN一天只能上传十篇blog...只能慢慢传了。备注其四:中间修改了(咕咕咕)了好长时间,目录又发生了一些变化。。。友情链接:https://blog.csdn.net/Adolphrocs/article/details...原创 2019-02-13 00:00:26 · 1638 阅读 · 0 评论 -
【ICPC模板】扩展欧几里得
递归实现代码较简短// ret value which is gcd(a, b)// x is coefficient of a// y is coefficient of bvoid ex_gcd(LL a, LL b, LL &r, LL &x, LL &y) { if (!b) {r = a, x = 1, y = 0;} else {...原创 2019-02-12 14:32:33 · 210 阅读 · 1 评论 -
【ICPC模板】得到(0, mod]之间最小同余整数
// 介于(0, mod]的最小模mod同余整数template <class T>T toPositive(T x, T mod) { x = ((x % mod) + mod) % mod; return x ? x : mod;}原创 2019-02-12 14:33:40 · 205 阅读 · 0 评论 -
【ICPC模板】得到[-mod, 0)之间最大同余整数
// 介于[-mod, 0)的最大模mod同余整数template <class T>T toNegative(T x, T mod) { x = ((x % mod) - mod) % mod; return x ? x : -mod;}原创 2019-02-12 14:34:17 · 272 阅读 · 0 评论 -
【ICPC模板】一元线性同余方程(Linear Congruence Equation)
#include <iostream>using namespace std;typedef long long LL;/* ax + by = gcd(a, b) *//* x = xpp - q * xp *//* y = ypp - q * yp *//* xpp 表示 x pre pre, 即x(n - 2), 其余同理 */template <...原创 2019-02-12 14:35:17 · 386 阅读 · 0 评论 -
【ICPC模板】多元一次不定方程(丢番图方程)求解
核心:首先移项,左边仅剩下ax + by,使用扩展欧几里得求解x和y,其右侧值应当满足能够整除gcd(a, b),接着用扩展gcd求解gcd(a, b)和c的参数,c的参数z将作为中间过程的答案,而gcd(a, b)的倍数将用来给前面求过的所有结果翻倍,以此类推。方程有解当且仅当右侧常数c能够整除gcd(a, b, c, d……)。代码:#include <iostream...原创 2019-02-12 14:36:09 · 1943 阅读 · 0 评论 -
【ICPC模板】中国剩余定理(Chinese Remander Theorem, CRT)
中国剩余定理描述的是一种求解一元线性方程同余组的方法,形如下图:使用这一方法有一个前提是:对于任意两个模数m[i]和m[j](注:此处[]中的内容表示下标),应有gcd(m[i], m[j]) = 1,即二者互素。中国剩余定理的核心是“构造”,它给出了一种构造此类方程组解的方法。令M表示全体模数m[i]的乘积,用M[i]表示全体模数的乘积M除以m[i]的值(即除了第i个模数m[i]...原创 2019-02-12 14:37:28 · 246 阅读 · 0 评论 -
【ICPC模板】扩展中国剩余定理 (扩展CRT)
扩展CRT问题与一般CRT问题相同,可以理解为是CRT问题的一种更加通用的解法。相较于一般的中国剩余定理,它可以用来解决模数之间不互质的情况,同时仍然可以解决互质的情况。需要使用扩展欧几里得方法。整体方法是合并,将多个同余式合并,直到最后只剩下一个,进行求解。对于两个同余式:写成等式的形式,并进行联立:移项得到①式:当且仅当:成立时方程有整数解k1与...原创 2019-02-12 14:41:38 · 223 阅读 · 0 评论 -
【ICPC模板】勾股数组
本源勾股数组取n < m且满足(n & 1) ^ (m & 1)为1(这里的^为异或,此表达式说明二者奇偶不同),同时gcd(n, m) = 1(即二者互素),则可得到满足sqr(a) + sqr(b) = sqr(c)(其中sqr()表示平方)的勾股数组: a = sqr(m) – sqr(n) b = 2nm c = sqr(m) + sqr(...原创 2019-02-12 14:42:36 · 452 阅读 · 0 评论 -
【ICPC模板】费马大定理 (Le dernier théorème de Fermat)
也叫做费马最后定理 (Fermat's Last Theorem),这一定理说对于n > 2的情况,下面的不定方程没有整数解。原创 2019-02-12 14:43:19 · 227 阅读 · 0 评论 -
【ICPC模板】费马小定理 (Fermat's little theorem)
对于素数p,有下图所示同余式成立:更多情况下,写作下面的等价形式:注意:费马小定理的逆命题为假,也就是说,满足上式的数p不一定是素数,这样的合数被称为伪素数,因此不能使用这个定理来判定素性。...原创 2019-02-12 14:44:18 · 355 阅读 · 0 评论 -
【ICPC模板】Catalan Number (卡特兰数)
目录Catalan Number (卡特兰数)通项公式递推关系渐进关系相关问题卡特兰数扩展问题Catalan Number (卡特兰数)通项公式其中Cn表示Catalan数序列的第n项。上述通项公式可以被理解为:在一个二维直角坐标平面内,从(0, 0)点出发走到(2n, 0)点的路径数,这条路径要求对于任意点(x, y)对于其横坐标相邻点的纵坐标差值的绝...原创 2019-02-13 00:01:13 · 429 阅读 · 0 评论