自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 HDU1261解题报告

中文题意略。就是要求排列组合a1Cn * a2C(n-a1) * a3C(n - a1 - a2)…………不过要高精就是了。通过这个题学到了高精度排列组合公式的简洁写法。同时掌握了高精乘法和除法。[code="java"]void bign(int a, int n)//总值乘以n,除以a{ int c = 0; int i, j; for (j...

2015-04-07 17:19:46 157

原创 一些基础数学平面问题

以下引用自http://blog.csdn.net/lishuhuakai/article/details/8518245(1) n条直线最多分平面问题题目大致如:n条直线,最多可以把平面分为多少个区域。析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切...

2015-04-07 11:15:38 112

原创 KMP

字符串匹配:KMP,就是给出一个长串T,给出一个短串P,求T是否包含子串P,若包含,输出第一个子串的位置。否则输出-1。首先假定i是T的指针,j是P的指针。对于传统的匹配模式,每当T[i] != P[j]时,我们会把j变成0,i跳回到刚才匹配的起始位置的下一个位置重新进行匹配,这样复杂度是O(n*m).但是对于KMP思想,可以先构造一个next数组,next[j] = k 表...

2015-03-24 12:10:33 118

原创 图论之两种最小生成树

第一种,Prim算法.算法:Prim算法和DIJ类似,整个代码也类似。过程:假设顶点标号为1 ~ V,第一次先从所有未确定的点中找到距离1(此时只有1是确定的点)最近的点,然后将此点加入到已确定的点,并把该段距离加入总和。然后更新其他的边(这里和DIJ不同),每次更新,都是对已知的点进行选择,选择该点,与哪个已确定的点直接相连最短。然后在下次循环时,找到与确定的点(此时除了1还有另...

2015-02-14 10:53:18 95

原创 图论之三种最短路

第一种,bellman-ford算法;算法:求单源的两点间最短路。过程:每次枚举所有已知的边,更新一个点到源点的最短距离,重复V-1次,即可找到各个点离源点的最短距离。证明:对于从源点出发到任意一点,最差的情况就是算出了前面所有点的最短距离,才能求出该点的最短距离,即把该点看成是V,起点看成是1,那么这两点间最多有V-1条边,对于每条边上的端点,都需要枚举所有的边数E,才能...

2015-02-13 21:08:08 199

原创 哈希算法

哈希表(Hashtable,也叫散列表),是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。 这个映射函数叫做散列函数,存放记录的数组叫做散列表。 哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,...

2015-01-30 12:56:34 118

原创 字典序比较类

字典序比较类的常用贪心法:按照字典序比较S和将S反转后的字符串S'; 实例1:每次从一个给定的S字符串的头或者尾取一个字母放入新的字符窜T中,要求得到新的字符窜T为字典序最小。算法如下:按照字典序比较S和将S反转后的字符串S';如果S较小,就从S的开头取出一个文字,追加到T的末尾;如果S'较小,就从S'的开头取出一个文字,追加到T的末尾;如果相同就随便取。...

2015-01-13 23:06:56 339

原创 暴力算法的优化

对于一些暴力循环嵌套的算法,例如抽签,从n个数里依次取4个数,每次取完皆放回。求取完4次后的数字是否有可能等于某个数。即a[i] + a[j] + a[k] + a[g] == m; 这样暴力的话就用4个for循环嵌套枚举每一种相加的和的可能性外加判断语句。但是这样复杂度是On^4,明显太大。 初步优化:那么想到,由于n个数是给定的,而且每次取的数字都在这个给定的数组里取,...

2015-01-11 13:29:23 467

原创 一道概率题

论剑F题。。咋一看各种数据需要处理和判断,好像很麻烦。。但是仔细思考之后。其实可以将问题分解为若干个子问题概率来处理; 对于该概率问题,可以先用一个代表颜色的数组分别遍历一遍男主的衣服和裤子,然后得到各种颜色对应的件数,然后就是重点开始了: 遍历出男主的各种穿衣穿裤情况,对应每种情况下算出当前的概率p,并调用一个函数来计算出全部女生中恰好有x个人穿相同衣服裤子的概率和。然后返...

2015-01-01 22:48:54 131

原创 三分法小结

二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~如图,类似二分的定义Left和Right,mid = (Left + Right) / 2,midmid = (mid + Right) / 2;如果mid靠近极值点,则Right = midmid;否则(即midmid靠近极值点),则L...

2014-12-15 08:37:40 93

原创 初识树状数组

树状数组:是一个查询和修改复杂度都为log(n)的数据结构,假设数组A[1..n],那么查询A[1]+...+A[n]的时,间是log级别的,而且是一个在线的数据结构。树状数组原理如下:主要是依靠神奇的二进制转换进行保存数据。所以我们需要使用lowbit函数。[code="java"]const int D = 1000005;int s[D];inline int lowbi...

2014-12-14 23:11:42 82

原创 小数转分数方法hdu-1717

⑴ 把0.4747……和0.33……化成分数。想1: 0.4747……×100=47.4747…… 0.4747……×100-0.4747……=47.4747……-0.4747……(100-1)×0.4747……=47即99×0.4747…… =47 那么 0.4747……=47/99想2: 0.33……×10=3....

2014-12-07 22:34:07 247

原创 排序函数的用法总结

1.qsort   功 能: 使用快速排序例程进行排序   用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));   各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针[color=red]这个函数...

2014-11-29 10:42:33 156

原创 POJ1065贪心

题意:有n条木棒,给出它们每条的l和w,用一台机器对它们进行加工,如果机器正加工的木条,与在它之前加工的木块有关系:l = Min && !vis[i]) { vis[i] = 1; Min = haha[i].wi; } ...

2014-11-29 10:30:34 128

原创 二分法小结

二分法的关键在于对“=”的判断选取范围。例如对于目标task这样寻找:[code="java"]while (l task的情况。因为最后输出的用的是l.(就是让程序找到目标task的时候,task是大于接下来的搜索范围的,然后使l不断的增加)。当到达循环终止l == r 的时候呢l 会再一次+1从而得到task而退出循环。。相反的,如果输出是用r,那么应将mid == task...

2014-11-27 10:36:01 128

原创 经验贴

20.两个分数求最小公倍数:先得到两个最简的分数,然后用这两个分数的分子的最小公倍数 / 这两个分数的分母的最大公约数。即答案19.用int开的数组MLE的时候可以考虑题目数据是不是在short的范围内改用short可以缓解。如果不行则考虑滚动数组节约内存。18.对字符数组的输入还可以控制从某个位置开始读入,例如:[code="java"] char s[22]; sc...

2014-11-24 17:53:38 93

原创 POJ 3626坐标处理与BFS

BFS是从起点开始,对每一步的同一层分别加入队列中,进行下一层的搜索判断,直到搜到目标为止。。细节注意:1,临界问题,定义数组后,对于下标m,0可以使用,而m是不可使用的。即判断时应为:[code="java"]if (x < 0 || x >= m)[/code]此处若>=写成>则会造成一次runtimr error;2,坐标处理:为使代码可视化,可以先定义两个数组,例如每次...

2014-11-24 16:40:03 101

原创 poj-3278

第一道BFS的题。感觉主要是队列思想,只要按照一层层的顺序依次加入队列中进行展开即可。另外标记是否展开过。。BFS和DFS不同。BFS是要同一层的展开完了之后再进行下一层的展开的。因为使用先进先出的队列实现。不过题目的通性还是一样,要注意边界的条件。比如这个题是要达到>=0而不是>0的。另外,注意多函数的使用划分功能。。。结果一般都是直接寻址的。...

2014-11-19 14:09:35 81

原创 school 9503总结

由此题想出:一般这类题会这样几种:第一种,此题所给的例子数据算是比较好的,是属于规律的范围。即给了4 和5 的测试数据。。这样分析起来容易找到规律。但是要注意的是前面的几项是否也会满足该条件,不要遗漏了。否则一直WA也不知道什么情况!例如本题的1,2,3要特殊考虑。第二种,题目给的数据既有特殊的又有普遍的,那么就要靠自己去模拟一下过程。实在特殊复杂的可以转化成第三种,但测试数据一定要严...

2014-11-02 18:27:52 81

原创 经验贴SCHOOL 1078

对于1078,要先理解题意,并动手把题目的式子列出来。这样方便分析。然后再仔细看题目,与问题,与条件之间的关系。坑点1:题目给的是加密过程,要求我们的是解密。坑点2:题意歧义,原码指的是该字母本身的原码;该题的收获呢,就是又学到了一些容易出错的坑点和一个解题的思路。写出了式子对应题目要求之后发现[code="java"]for (i = 1; i < len; i+...

2014-11-01 17:49:02 75

原创 总结经验帖

SCHOOL OJ 11159分析此题,看一下数据,4亿的数值,循环暴力解的话肯定会超时。而对于这种类似数位统计的题目,应该要逐位分析看看,看能不能找到什么规律。突破口知识点:m个连续的数分别%m之后必然是得到0~m-1的数;而m个连续的数各加上一个相同的数X后得到的数依旧是连续的m个数,再%m得到的依旧是0~m-1的数。就如此题。一个区间[a,b],而每次都有%10,那么就先...

2014-11-01 17:18:57 66

原创 浅谈快排

今天水了一道排序题。学会了快排的方法。快排并不仅仅是分治,还要有随机。因为考虑到一些特殊的case可能会影响复杂度。先讲一下快排的分治思想吧。。。 在一个给定的数列中,从第一个数开始,依次往后,每当小于数列最后一个数(此数最好是由随机数产生)时,便记录下来,最后将最后一个数与刚才最后一个的后一个数进行exchange。那么一次下来。就变成了三部分,两个数列和一个数,前一部分虽是乱...

2014-10-19 21:16:51 77

原创 编程初试水题

学习了一些基础知识之后,也开始了OJ之旅。没有丝毫刷题经验的我经历了N次的WA,在不断的修改之后,也体验到了AC的快感。下面是个人做的前几道题的一些总结和收获。第一点,仔细了解题意并掌握在OJ上固定的输入输出格式,这个对于初学者来说是宝贵的经验。第二点,在思考做数据处理时的条件设置时,应该思考出能够进行分类的条件判断,然后选择一种更为特殊的作为if语句,而剩下的尽量让它能使用else,避免...

2014-10-09 16:31:07 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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