ACMer_ZP的博客

奔向自己的诗和远方

巧解容斥

hdu 6053 题意:给定一个a序列,让求有多少种b序列满足,b序列的对应值小于等于a序列的值,且b序列的任意区间的数的gcd>=2; 思路:任意区间的数的gcd>=2则说明,b序列任意两个数不互素,这就可以枚举约数,假如约数为k,则a序列的每个数ai的贡献为ai/k向下取整个值...

2017-07-28 17:40:04

阅读数 123

评论数 0

lucas定理

题目链接 大佬博客还有扩展lucas 题意:给你n和m求C(n,m)。 C(n,m)=n!/(m!*(n-m)!); 当题目数据不是很大的时候可以打表,存一个阶乘表和逆元表,这样就可以直接计算了,但是当n和m很大的时候,就要用lucas定理了,前提是模数要是素数。 lucas定理:C(n...

2017-07-27 11:54:07

阅读数 282

评论数 0

各种数论定理

小技巧 当算某个数的阶乘或者算很大的次方的时候,可以将数字转换为10^n的进制表示方法(比如1000进制或者10000进制),这样出来点的数字和原答案是一样的,只不过在一个数组的一个元素中多存了几位。约数个数定理 首先,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak,...

2017-07-27 09:13:41

阅读数 553

评论数 0

字符串hash

大佬博客 题目链接 题意:刚开始给定n个字符串,每一个字符串有一个权值,后面有q次询问,1代表将a字符串的权值改为吧,2为询问有多少个字符串的后缀包含a并且权值是小于等于a字符串的权值的。 思路:上面大佬的博客里面讲了字符串的hash,这道题预处理处每一个字符串的hash值,然后n^2统计出...

2017-07-24 18:37:16

阅读数 149

评论数 0

伸展树(Splay)

codevs 4655序列终结者 Splay树是一个优化过的二叉搜索树,所以它满足二叉搜索树的性质,二叉搜索树有可能退化为一条链,n^2的时间复杂度,而Splay经过一系列的旋转操作使其平均复杂度控制在log(2)n但是常数比较大,因为要进行一系列的旋转操作。/* 因为Splay_tree满足排...

2017-07-22 10:23:52

阅读数 123

评论数 0

Treap

POJ - 3481 警告:千万不要初始化种子,这oj会RE被坑了一天QAQ。 Treap就是一个用随机数优化了的二叉搜索树,二叉搜索树满足某个节点的值大于等于左儿子节点的值,小于右儿子节点的值,但是这样插入的值就会有可能形成一条链造成很低的效率,所以采用了用随机数优化的方法,随机的给每一个节...

2017-07-19 17:35:49

阅读数 109

评论数 0

动态主席树

ZOJ 2112 题目大意:给n个数,有m个操作。修改某个数,或者询问一段区间的第k小值。 动态主席树的意思就是原来的数组已经建好主席树了,然后又要修改数组中的某个值,然后还有许多查询,当然不止一次修改。 如果我们每次都建立主席树的话假如有n个数m次修改就是n*m的时间复杂度,这在n,m很大...

2017-07-17 10:16:31

阅读数 501

评论数 0

静态主席树

POJ - 2104 主席树和值域线段树存的值都是一样的,但是主席树是n棵线段树,第i棵线段树存储的是i和i之前的所有信息(和前缀和类似),所以在求有关区间L~R的时候就可以用第R棵线段树减去第L-1棵线段树对应节点的值就得到了L~R之间的线段树。 类似值域线段树,没次插入一个数的时候最多修改...

2017-07-13 15:27:35

阅读数 174

评论数 0

值域线段树

题目链接 题目可转化为值域线段树的写法,题目上说让求所有区间和的值在L到R之间的有多少个,每一个区间值可以由数组的前缀和快速求出来,设sum[i]为i之前的和,i小于j即求sum[j]-sum[i]在L到R之间的有多少个,可以转化为 sum[j]-R<=sum[i]<=sum[j]...

2017-07-11 18:42:39

阅读数 282

评论数 0

hdu 2243 AC自动机+dp(矩阵快速幂优化)

做这个之前建议做一下poj 2778 这道题要求长度小于等于m的字符串包含所给串的有多少种,可以算出所有的情况然后减去不包含所给串的情况就是所求的。 大佬博客 大佬博客 矩阵里面存的是从i节点到j节点走一步共有多少种走法(不能走题目上给的字符串)。 然后将这个矩阵m次幂就可以求出走m步(...

2017-07-07 17:38:47

阅读数 160

评论数 0

字符串的最大最小表示法

算法描述:给定一个字符串s,可以进行左循环(右循环)移位,总共的结果有strlen(s)种,在这些结果中最小的是那个,最大的是哪个。 详解描述 论文传送门 HDU3374 题目意思:给定一个字符串s求循环几次会是字典序最小的(最小表示),最大的(最大表示),分别会出现几次。 思路:第一个...

2017-07-05 11:50:41

阅读数 252

评论数 0

扩展KMP

详解链接 hdu4300题解链接#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int max...

2017-07-04 20:24:29

阅读数 144

评论数 0

Manacher算法--O(n)回文子串算法

马拉车算法详解地址#include<cstring> #include<cstdio> #include<iostream> #include<algorithm> using namespace std; int p[2000010];//记录以s...

2017-07-04 15:31:41

阅读数 158

评论数 0

kmp

/* kmp的next数组存的是i之前的串的前缀和后缀的最长匹配长度 */ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespa...

2017-07-04 10:15:03

阅读数 129

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭