![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学基础
gyarenas
这个作者很懒,什么都没留下…
展开
-
关于筛法
以前总以为超过500万数据线性筛法要比nlogn筛法跑的快,用5亿以内数据测试了下,加了优化的nlogn筛法总是要比线性筛法快的,对于用位压省内存来说,nlogn的筛法优势尤其明显,以后统一用如下筛法了。int prim[MAXN/10], npr;bool isnp[MAXN+1];void init(){ npr = 0; prim[npr++] = 2; isn原创 2014-03-31 23:11:21 · 856 阅读 · 0 评论 -
Generator zoj2619
这题和hdu3058要求差不多,只不过只有一个终止串,但正因为如此,生成的串长度期望也增加了,long double精度也不够了,之后网上看到解集全部是整数(为什么还没想通),所以可以用整数消元。#include #include #include #include #include #include #include #include #include #i原创 2013-05-28 22:08:53 · 764 阅读 · 0 评论 -
Common Substring poj3415 (SAM解法)
这题用SA做的很伤心,用SAM比用SA做要简单,这类串的计数类的题目属于比较麻烦的题,需要记录的信息较多,首先要把没个状态的min和|right|都预处理出来,还需要记录四个额外的信息,见代码注释吧。#include #include #include #include #include #include #include #include #include #inc原创 2013-06-20 12:20:35 · 937 阅读 · 0 评论 -
数学题列表
原文:http://blog.csdn.net/haha593572013/article/details/7885950 1.burnside定理,polya计数法 这个大家可以看brudildi的《组合数学》,那本书的这一章写的很详细也很容易理解。最好能完全看懂了,理解了再去做题,不要只记个公式。 *简单题:(直接用套公式就可以了) pku240转载 2013-07-04 10:02:05 · 1004 阅读 · 0 评论 -
Distinct Sub-matrix HDOJ4416
参照爱神的思路,先把矩阵的每行都hash,然后枚举子矩阵的宽度w,,按照从上到下,从左到右的顺序,把宽度为w的序列的hash值连在一起,注意不同的列起点之间用不同的字符隔开,然后统计有多少个不同的子串就有多少个不同的宽度为w的子矩阵,累加后就是答案#include #include #include #include #include #include #include原创 2013-06-16 11:47:52 · 678 阅读 · 0 评论 -
Boring counting HDOJ3518
枚举长度,然后按height分组看每组中的下标最大值与最小值只差是否大于等于当前枚举长度,如果满足则答案加1#include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-06-15 22:02:48 · 549 阅读 · 0 评论 -
Josephus again HDOJ3089
约瑟夫循环问题,不过此题的n很大,不能使用O(n)的递推方法,会TLE的参考了网上的优化方法,是在O(n)的递推方法上优化的观察递推式 num = (num+m)%i当num,m比较小,而i比较大时,按照递推式,num的变化实际上是每次增加m的而增加m的次数其实是可以计算出来的所以当num+m >= i时我们使用普通递推式, 而num+m 设增加次数为x,x要满足下式n原创 2013-06-10 22:19:37 · 921 阅读 · 0 评论 -
Exclusive-OR hdu3234
借鉴cxlove思路, state[i]表示X[i]异或当前的祖先值,设X[r1]为X[i]之前祖先,X[r2]为现在祖先,路径压缩前state[i] = X[i]^X[r1],state[r1] = X[r1]^X[r2], 路径压缩时令state[i] = state[i]^state[r1] = X[i]^X[r1]^X[r1]^X[r2] = X[i]^X[r2],所以路径压缩递推式成原创 2013-05-15 20:06:10 · 723 阅读 · 0 评论 -
Generator hdu3058
trie图上递推+高斯消元, 卡精度题,代码挫了,C++过不了(long double也不行),G++可以过 , 对于结果比较大的数据会出错比如 8 1AAAAAAAAAAA这组数据我的代码在C++和G++输出就不同,还有就是有double中的运算尽量应尽量避免除法运算,精度损失较大 #include #include #include #include #i原创 2013-05-27 20:10:20 · 869 阅读 · 0 评论 -
货币兑换Cash
http://www.lydsy.com/JudgeOnline/problem.php?id=1492这道题的关键在于 一天可以交易任意次和必然存在一种最优的买卖方案满足:·每次买进操作使用完所有的人民币;·每次卖出操作卖出所有的金券。这样就可以用一维的DP求解了,设dp[i]表示前i天所得的最优解由于只能按比例购买,所以可以把A和B组合成一种价格为K = (a[j]*r原创 2013-08-22 16:53:44 · 865 阅读 · 0 评论 -
Arithmetic Progressions CC COUNTARI
题解: http://blog.csdn.net/acm_cxlove/article/details/9473839 FFT+分块,主要学习一下分块思想复习一下FFT#include #include #include #include #include #include #include #include #include #include #inc原创 2013-10-06 20:00:17 · 726 阅读 · 0 评论 -
关于除法与乘法逆元关系的一些理解
*表示普通乘法,/表示普通除法,⊙m表示模m乘法首先可以证明⊙m>是一个群,其中Zn为模m的简化剩余系设x,y∈Zn,则有x,y与m互质,所以x⊙my = (x*y)mod m = z,z与m互质,z∈Zn,所以⊙m在Zn上是封闭其单位元为1,且⊙m满足结合律,利用公因数理论可知,x∈Zn,gcd(x, m) = 1,所以必存在y,使得(x*y) mod m = 1,设gcd(y,原创 2013-01-16 11:02:47 · 2110 阅读 · 0 评论 -
数论笔记
以下如无特殊说明,都默认在整数集中,^为幂符号,|为整除符号,%为取模符号,!| 表示不能整除1. 费马数是形如2^(2^n)+1(n >= 0)的数,表位Fn,任意俩个费马数是互质的。 证明:首先,对任意的Fn 都有 Fn%2 = 1,所以对于任意的不为1的d,使得 d|Fn 都有d>2;当n>m时,可以证明 Fm|2^(2^n)-1; ①设Tk = 2^(2^k)-原创 2014-01-14 15:57:15 · 1746 阅读 · 0 评论 -
数论的一些定理
威尔逊定理:当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p ) (o(╯□╰)o我开始竟然看成!=了)证明:充分性:因为(p-1)! = -1 (mod p),所以(p-1)! 与p互质,如果p不是质数,则p的因子肯定在2,3,...p-1之中,这与条件矛盾,所以p必是质数 必要性:若p是素数,取集合 A={1,2,3,...p -1};原创 2013-03-07 14:23:37 · 1132 阅读 · 0 评论 -
相似字符串
http://msbop.openjudge.cn/bop2013/R1a_B/比较基础的卷积题目,从卷积的定义来看,例如f(x1)和g(x2)的卷积,就是把g(x2)以y轴翻转然后在左移x3个单位,然后俩个函数相乘再在定义域上积分(离散的是求和),x3就是卷积得到函数的自变量,离散的卷积就相当于多项式的乘法。顺便存一下模板。#include #include #inclu原创 2013-08-11 14:16:11 · 661 阅读 · 0 评论 -
素数一小坨
素数基础篇 之 素数的判断 - czyuan原创源链接:http://hi.baidu.com/vfxupdpaipbcpuq/item/34976fc954dae62eee466512素数:只有两个正因数(1和自己)的自然数。素数,作为数论中最基础的理论之一,又是许多著名定理的根源。几个可以无视的性质:1. 1不是素数2. 除了2以为所转载 2013-12-31 21:10:58 · 1336 阅读 · 0 评论 -
数位DP题集
强烈推荐记忆化搜索写法,好写,通用。入门题:hdoj 2089#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-06-12 20:57:12 · 1430 阅读 · 0 评论 -
Number Transformation CF 251C
http://codeforces.com/contest/251/problem/C关键就是注意到从i*lcm(1,2 ...K)转移到(i-1)*lcm(1, 2...K)的代价等于lcm(1, 2...K)转移到0的代价,而且由于第一种操作只能减小1而第二种操作不可能越过过i*lcm(1, 2...K)的(可以用反证法证明),所以转移的过程必然会经过所有的i*lcm(1, 2,原创 2013-12-30 20:09:05 · 692 阅读 · 0 评论 -
吉哥系列故事——恨7不成妻 hdu4507
数位DP, 继续练习记忆化搜索的数位DP写法,状态转移需要推导一下,是依据这个性质(a+b1)^2+(a+b2)^2+...(a+bn)^2 = n*a^2+2*n*(b1+b2+...bn)+b1^2+b2^2+...bn^2#include #include #include #include #include #include #include #i原创 2013-06-09 22:04:42 · 1451 阅读 · 2 评论 -
Find the Permutations UVA11077
解决这道题首先要解决这个问题,给出一个排列P,至少需要交换(任意位置)几次才能变成自然排列,把这个排列P看成一个置换,分解成循环,目标是使的每个循环的长度为1,不难看出((= =!)),各个循环之间是不需要交换的,而一个循环长度为k的循环要分解成为长度为1的循环需要(k-1)次交换,所以结论为有k个循环组成的长度为n的序列共需要(n-k)次交换才能变为自然排列。有了结论,接着就是递推了,设tabl原创 2013-05-13 20:44:21 · 565 阅读 · 0 评论 -
Investigating Div-Sum Property UVA11361
思路按照训练指南上说的的递推,table[i][j][k]表示i位数各位数字和对给定数取模为j,数字本身对给定数取模为k的数字个数,最后的统计细节需要注意,要从高位到低位统计,个位要单算。#include #include #include #include #include #include #include #include #include #inc原创 2013-01-18 09:50:46 · 610 阅读 · 0 评论 -
Remember the Word LA3942
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-16 09:42:15 · 556 阅读 · 0 评论 -
Exploring Pyramids poj2795
训练指南上给图后三幅有错误#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-01-17 10:27:53 · 669 阅读 · 0 评论 -
Stand in a Line UVA11174
把所有的村民排成一队,所有的父亲必须排在其子孙的前面,有人的父亲不在村子里,求排列的总数,首先设一个虚拟节点0,表示所有父亲不在村子里的人虚拟父亲,这样所有的点就构成了一棵树,假设以i为根的子树的排列数为f(i),其节点数为s(i),考虑一棵以C为根的子树,cj为其孩子,首先每棵以孩子节点为根的子树的排列是相互独立的,满足乘法原理,所以在不考虑子树之间的排列时排列总数为∏f(cj),再原创 2013-01-16 13:56:41 · 988 阅读 · 0 评论 -
Ingenuous Cubrency UVA 11137
递推 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-01-14 11:30:28 · 592 阅读 · 0 评论 -
Matches UVA 11375
第一次用java,真心不错,感谢林威同学给我装的java虚拟机和Eclipseimport java.math.BigInteger;import java.util.Scanner;public class Main { static int MAXN = 2010; public static void main(String[] args){ i原创 2013-01-14 09:48:37 · 752 阅读 · 0 评论 -
Cheerleaders UVA11806
容斥原理#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-01-13 21:48:34 · 598 阅读 · 0 评论 -
Triangle Counting UVA11401
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-01-13 20:07:48 · 635 阅读 · 0 评论 -
Chess Queen UVA 11538
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-01-13 18:41:32 · 419 阅读 · 0 评论 -
GCD Extreme(II) UVA11426
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-01-24 11:14:25 · 491 阅读 · 0 评论 -
带标号的连通图计数
给n个带有标号的点,求其连通图的种数,设f(i)为答案,g(i)为不连通的图种数,h(i)表示图的总数有f(i)+g(i) = h(i) = 2^(n*(n-1)/2)考虑标号为1的节点所在的连通分量,则可以按照其所在连通分量的点的个数进行分类有g(i) = Σ(C(i-1, k-1)*f(k)*h(i-k))( 1f(i) = h(i)-g(i)import java.m原创 2013-01-16 16:24:03 · 1155 阅读 · 0 评论 -
Glenbow Museum LA4123
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-01-21 19:52:29 · 528 阅读 · 0 评论 -
Series-Parallel Networks UVA 10253
训练指南写如果一个节点表示并联(串联)则其子节点全部为串联(并联)或者单边这是因为任何一个并联(串联)网络都可以由若干个个串联(并联)网络并联(串联)起来组成,这样计数就保证既无重复,有无遗漏,这道题实际上求的是有n个叶节点而且每个非叶节点有至少俩棵子树的树的个数而且注意子树之间是无序的。整数划分版本:#include #include #include #include #inc原创 2013-01-22 14:15:39 · 517 阅读 · 0 评论 -
Pixel Shuffle poj 2789
一道置换题,置换类型的题目都可以转化成若干个有向圈的模型进行思考,此题先把题目给出操作组合得到的置换求出来,分解成循环,而循环之间相互是不会影响的,单独的把每个循环看成一个有向圈,每次操作都会是所有的边指向下一个节点,所以经过k(k为循环中元素个数的倍数)次操作可以是每条边指向自己,所以答案就是每个循环元素个数的最小公倍数#include #include #include #i原创 2013-03-25 21:02:44 · 819 阅读 · 0 评论 -
Leonardo's Notebook LA3641
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-03-21 21:58:53 · 697 阅读 · 0 评论 -
Race to 1 UVA11762
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-03-17 20:42:05 · 653 阅读 · 0 评论 -
Expect the Expected UVA11427
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-03-16 21:27:22 · 740 阅读 · 0 评论 -
Recurrence UVA10870
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-03-30 14:26:54 · 646 阅读 · 0 评论 -
Tribles UVA11021
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-03-13 17:36:37 · 933 阅读 · 0 评论 -
Treblecross UVA10561
SG定理的应用,SG[n]表示长度为n的空棋盘的mex值,可以根据第一个棋子的位置将棋盘分割,从较小的棋盘中递推得出,预处理出#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-03-10 14:36:56 · 950 阅读 · 0 评论