
ACM知识点
文章平均质量分 58
xtulollipop
这个作者很懒,什么都没留下…
展开
-
广义Fibonacci数列找循环节
转载http://blog.youkuaiyun.com/ACdreamers/article/details/25616461 今天将来学习如何求广义Fibonacci数列的循环节。问题:给定,满足,求的循 环节长度。来源:http://acdreamoj.sinaapp.com/ 1075题分析:我们知道矩阵的递推关系如下 然后继续有 那么,现在的问题就转化为求最小的,使得 所以我们可以先找出转载 2015-08-12 17:01:16 · 536 阅读 · 0 评论 -
问题模型积累
1.M面的筛子,扔n次,求n次中最大值的期望:解法:对于点数最大数i,情况数=in−(i−1)ni^n-(i-1)^n,除以总情况数mnm^n,所以概率为(i/m)n−((i−1)/m)n(i/m)^n-((i-1)/m)^n。所以期望为((i/m)n−((i−1)/m)n)∗i((i/m)^n-((i-1)/m)^n)*i;2.余数的和n%i=n−i×⌊ni⌋n\%i=n−i×⌊ni⌋∑ni=1K原创 2016-09-23 17:35:09 · 544 阅读 · 0 评论 -
知识小点积累
1.循环节f(n)=af(n−1)+bf(n−2),f(1)=c,f(2)=df(n)=af(n-1)+bf(n-2),f(1)=c,f(2)=d f(n)%p循环节:当c是膜p的二次剩余,枚举n=(p-1)的因子, 当c是膜p的非二次剩余,枚举n=(p-1)(p+1)的因子。2.二次剩余d是膜p的二次剩余当且仅当 d(p−1)/2≡1(mod p)d^{(p-1)/2}\equ原创 2016-08-30 22:50:07 · 437 阅读 · 0 评论 -
KMP算法详解
转自:http://www.matrix67.com/blog/archives/115如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm ma转载 2015-12-21 09:14:14 · 426 阅读 · 0 评论 -
set 的排序,及自定义排序
C++的容器大多数都是自动排序的,所以你使用这些容器时,你加入的元素类型必须是可以比较大小的,如果不是,则需要自定义排序规则,例如你自定义的结构体:[cpp] view plaincopy#include #include using namespace std; struct ju { int id,x转载 2015-08-22 22:57:11 · 599 阅读 · 0 评论 -
凸包问题
凸包问题 —— Graham扫描法:(1)找出点集p[]中最左下的点p1,把p1同点集中其他各点用线段连接,并计算这些线段与水平线的夹角,然后按夹角从小到大和按到p1的距离从近到远排序(夹角范围为 [0, 180)度,而且可以删除相同夹角且距离p1较近的点,保留最远点,这样可减少计算量。因为直线上的非端点不是凸包的极点,即如果p1,p2,p3在一条直线上,则只取凸点p1,p3。p2不在端点转载 2015-08-06 21:12:00 · 500 阅读 · 0 评论 -
优先队列
优先队列:顾名思义,首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~百度百科上这样描述的: 优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 优先队列的类定义 优先队列是0个或多个元素的集合,每个元素都有一个优先权或值,对优转载 2015-07-21 18:36:55 · 339 阅读 · 0 评论 -
卡特兰数。
卡特兰数:规定C0=1,而C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=16796,C11=58786,C12=208012,C13=742900,C14=2674440,C15=9694845·········································卡塔兰数的一般项公式为 另类递归式: h(n)=(转载 2015-07-27 16:40:23 · 521 阅读 · 0 评论 -
并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2015-07-29 21:55:52 · 374 阅读 · 0 评论 -
状态压缩
>>最近了解了一些题目,其中对棋盘或者是汉诺塔的表示一般都用到了状态压缩的方法,配合BFS或者是DP来做。题目链接:汉诺塔移动 http://stackoverflow.com/questions/16601701/facebook-sample-puzzle-towers-of-hanoi黑白棋游戏 http://www.wikioi.com/problem/2743/转载 2015-07-29 21:58:12 · 428 阅读 · 0 评论 -
线段树
线段树转载请注明出处,谢谢!http://blog.youkuaiyun.com/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操转载 2015-08-02 21:21:30 · 530 阅读 · 0 评论 -
线段树的入门级
线段树的入门级 总结 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。 对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。 使用线转载 2015-08-02 21:31:32 · 352 阅读 · 0 评论 -
树状数组(木有看到图)
树状数组中用的d【】,每个点都有一定的管辖范围; 如d[1]=a[1]; d[2]=a[1]+a[2]; d[3]=a[3]; d[4]=a[1]+a[2]+a[3]+a[4]; 等等; 这样的结构关键是为了,对一个数组内部动态的删除,增加,来高效的求某个点或者某个区间的值; 比如说对数组a,改变某一位的值需O(1),求某个k区间值O(k); 这样的m次操作是用O(m*k); 显然转载 2015-08-05 17:10:29 · 422 阅读 · 0 评论 -
dancing links 算法 解 Sudoku
1. Danclink links 算法解Sudoku的基本思想: 将Sudoku问题转化为等价的01矩阵问题,然后用dlx算法求解。从一个由0 1组成的矩阵中找到一个行的集合,使得集合中每列恰好包含一个1,称为01矩阵问题。解决它的dancling links 算法利用双向链表的一个性质,巧妙的剪枝,获得了较好的性能 A) 构造01矩阵01矩阵问题是什么?01矩阵转载 2015-08-06 20:20:16 · 561 阅读 · 0 评论 -
大数分解模板
1.Miller-Rabin 算法(基于费马小定理/Fermat 定理)作用:通过概率的方式判断素数。有误判概率,通过多次判断可以使误判概率控制在很小范围。理论基础:如果n是一个奇素数, 将n-1表示成2^s*r的形式(r是奇 数),a 是和n互素的任何整数, 那么a^r≡1(mod n) 或者对某个j(0≤j ≤s -1, j∈Z) 等式 a^(2^j*r) ≡-1(mod转载 2015-08-08 21:30:41 · 873 阅读 · 0 评论 -
大素数,大整数质因数分解模板
#include <stdio.h>#include <algorithm>#include <math.h>#include <stdlib.h>#include <string.h>#include <time.h>using namespace std;typedef __int64 LL ;LL pri[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 2转载 2015-08-11 16:17:18 · 697 阅读 · 0 评论 -
数学期望
近年的acm竞赛中,数学期望问题常有涉及,在以前也常让本人感到很头疼,近来突然开窍,掌握了基本的分析方法,希望对大家有帮助。写得浅薄,可能数学上不够严谨,只供理解。 首先,来看下期望有啥基本的公式。 对离散型随机变量x,其概率为p,有简说期望类问题的解法 - Kicd - Kicds 对随机变量A、B,有 简说期望类问题的解法 - Kicd - Kicds 第二条式子转载 2015-08-11 21:13:12 · 830 阅读 · 0 评论 -
数运算的一些模板
用过的一些模板 1.分数类的运算#include <utility>#include <algorithm>using namespace std;using namespace rel_ops;template <class VAL = long long> class Frac {public: VAL num,den; Frac(){} Frac(const原创 2016-09-21 18:14:11 · 362 阅读 · 0 评论