
ACM算法
文章平均质量分 70
MatchstickMen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
母函数
母函数母函数又称生成函数。定义是给出序列:a0,a1,a2,.......ak,......,那么函数G(x)=a0+a1*x+a2*x2+......ak*xk称为序列a0,a1,a2,.......ak,......的母函数(即生成函数)。 母函数有普通型的,也有指数型的。而我们通常在做题当中碰到的大多是普通型的,指数型的较少,主要用来求解多重排列的题型(我至今未涉及转载 2015-04-07 20:35:45 · 435 阅读 · 0 评论 -
字典树的讲解与模板
字典树又称单词查找树,Trie树,是一种形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 搜索字典项目的方法为:(1) 从根结点开始一次搜索;(2) 取得要查找关键词的第一个字母,并根据该字母选择对应原创 2015-04-18 10:00:32 · 450 阅读 · 0 评论 -
容斥原理
在计数时,必须注意无一重复,无一遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。推理证明:也可表示为设S为有限集,,则原创 2015-04-20 17:47:46 · 424 阅读 · 0 评论 -
优先队列 priority_queue 的用法
priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include #include #include u转载 2015-04-24 19:57:12 · 600 阅读 · 0 评论 -
最大公约数与最小公倍数
最大公约数与最小公倍数如果数a能被数b整除,a就叫做b的倍数,b就叫做作a的约数.约数和倍数都表示一个数与另一个数的关系,不能单独存在.如只能说16是某数的倍数,2是某数的约数,而不能孤立地说16是倍数,2是约数. 倍”与“倍数”是不同的两个概念,“倍”是指两个数相除的商,它可以是整数、小数或者分数.“倍数”只是在数的整除范围内,相对于“约数”而言的一个数字概念,表示的是能被某转载 2015-04-21 18:29:49 · 579 阅读 · 0 评论 -
欧拉函数
欧拉函数的定义:E(k)=([1,n-1]中与n互质的整数个数). 因为任意正整数都可以唯一表示成如下形式: k=p1^a1*p2^a2*……*pi^ai;(即分解质因数形式) 可以推出:E(k)=(p1-1)(p2-1)……(pi-1)*(p1^(a1-1))(p2^(a2-1))……(pi^(ai-1))转载 2015-04-21 19:53:50 · 410 阅读 · 0 评论 -
hdu-1695 GCD(容斥原理+欧拉函数)
GCDTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6780 Accepted Submission(s): 2475Problem DescriptionGiven 5 integers: a, b转载 2015-04-21 19:25:18 · 436 阅读 · 0 评论 -
hdu-1796 How many integers can you find(容斥原理)
How many integers can you findTime Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5026 Accepted Submission(s): 1425Problem Description原创 2015-04-21 19:09:37 · 357 阅读 · 0 评论 -
树状数组
树状数组(binary indexed tree),是一种设计新颖的数组结构,它能够高效地获取数组中连续n个数的和。 传统数组(共n个元素)的元素修改和连续元素求和的复杂度分别为O(1)和O(n)。树状数组通过将线性结构转换成伪树状结构(线性结构只能逐个扫描元素,而树状结构可以实现跳跃式扫描),使得修改和求和复杂度均为O(lgn),大大提高了整体效率。树状数组和线段树很像,但能用树状数组解原创 2015-04-21 20:27:08 · 391 阅读 · 0 评论 -
并查集算法
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。并查集可以用来表示元素之间的集合关系,即这些元素是不是属于哪个集合.通俗理解是,若两个元素是属于统一集合,就将这两个元素并在一起.存储结构上,用树结构模拟.一开始,每个元素自己构成一个集合,所以自己构成一棵树.然后,若有两个元素并成一个集合,则将这两个元素所在的树,合并成一棵树.具体实现的话,原创 2015-04-19 16:34:52 · 529 阅读 · 0 评论 -
Dijkstra 算法
Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是原创 2015-04-19 16:27:40 · 496 阅读 · 0 评论 -
hdu-oj 2516 取石子游戏 ( 博弈)
取石子游戏Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2887 Accepted Submission(s): 1674Problem Description1堆石子有n个,两人轮流取.先取者第1次原创 2014-10-19 20:25:35 · 472 阅读 · 0 评论 -
hdu-oj 1527 取石子游戏
1、在一堆石子中取走任意多颗;2、在两堆石子中取走相同多的任意颗;约定取走最后一颗石子的人为赢家,求必胜策略。两堆石头地位是一样的,我们用余下的石子数(a,b)来表示状态,并画在平面直角坐标系上。和前面类似,(0,0)肯定是 P 态,又叫必败态。(0,k),(k,0),(k,k)系列的节点肯定不是 P 态,而是必胜态,你面对这样的局面一定会胜,只要按照规则取一次就可以了。再看 y = x原创 2014-10-19 20:13:21 · 533 阅读 · 0 评论 -
c++中string的用法
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。首先,为了在我们的程序中使用string类型,我们必须转载 2014-08-14 10:26:55 · 729 阅读 · 0 评论 -
hdu-oj 1108 最小公倍数
最小公倍数Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32978 Accepted Submission(s): 18435Problem Description给定两个正整数,计算这两个数的最小公倍数原创 2014-08-09 11:13:13 · 447 阅读 · 0 评论 -
字符串的截取
几个经常用到的字符串的截取string str="123abc456";int i=3;1 取字符串的前i个字符 str=str.Substring(0,i); // or str=str.Remove(i,str.Length-i); 2 去掉字符串的前i个字符: str=str.Remove(0,i); // or str=str.Subst转载 2014-07-22 16:39:13 · 269 阅读 · 0 评论 -
Prim 算法
最小生成树算法Prime 最小生成树(MST):权值最小的生成树。 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路。可以把边上的权值解释为线路的造价。则最小生成树表示使其造价最小的生成树注意:prim算法适合稠密图,其时间复杂度为O(n^2),其时间复杂度与边得数目无关,而kruskal算法的时间复杂度为O(eloge)跟边的数目有关,适合稀疏图。算法思路:G=(原创 2015-04-19 16:19:40 · 420 阅读 · 0 评论 -
博弈(部分)
三类经典博弈类型:巴什博奕、威佐夫博奕、尼姆博奕取石子问题:A:1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"Firstwin". Input输入有多组.每组第1行是2 Output先取者负输出"Second win". 先取者胜输出"Firs原创 2015-04-19 16:38:57 · 484 阅读 · 0 评论 -
C库函数 qsort 七种使用方法示例
C库函数qsort七种使用方法示例七种qsort排序方法一、对int类型数组排序C++代码int num[100]; Sample: int cmp ( const void *a ,const void *b) { return *(int *)a – *(int *)b; } qsort(num,100,sizeof(num转载 2014-07-22 10:35:47 · 449 阅读 · 0 评论 -
hdu-1166 敌兵布阵(树状数组水题)
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 52599 Accepted Submission(s): 22043Problem DescriptionC国的死对头A国这段时间正在进行军原创 2015-04-21 20:47:40 · 457 阅读 · 0 评论