![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识总结
文章平均质量分 67
whppmy
博客搬到 bugnull.com
展开
-
最大连续子序列各种解法
1.首先最朴素的方法是暴力 O(n^3) 直接两个for循环枚举子序列的首尾,然后再来个循环计算序列的和,每次更新和的最大值。 但是这种方法的复杂度是O(n^3),效率实在太低了。。。————————————————————————————————————————————————2.第二种方法是预处理 O(n^2)转载 2015-07-27 21:53:12 · 1202 阅读 · 0 评论 -
dijkstra算法实现
#include #include using namespace std;const int maxnum = 100;const int maxint = 999999;// 各数组都从下标1开始int dist[maxnum]; // 表示当前点到源点的最短路径长度int prev[maxnum]; // 记录当前点的前一个结点int c[maxnum][转载 2016-03-15 20:08:09 · 468 阅读 · 0 评论 -
素数的判定
米勒罗宾算法bool test (LL n,LL a,LL d){ if(n==2) return true; if(n==a) return true; if((n&1)==0) return false; while(!(d&1)) d=d>>1; LL t=pow_mod(a,d,n); while((d!=n-1)&&(t!=1原创 2015-08-17 18:16:17 · 551 阅读 · 0 评论 -
年月日计算星期公式
if( M==1 || M==2 ) { M+=12; --Y; } //1582年9月3日后:w = (d + 2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; //1582年9月3日前:w = (d+2*m+3*(m+1)/5+y+y/4+5) % 7; //蔡勒公式 0是星期天 if( Y < 1582 ||原创 2015-12-09 11:16:43 · 1298 阅读 · 0 评论 -
C++函数队列 BFS的好帮手
queue变量先进先出empty() 如果队列为空返回真pop() 删除对顶元素push() 加入一个元素size() 返回优先队列中拥有的元素个数top() 返回优先队列对顶元素优先队列 按某特定条件出列priority_queueq可以直接定义在结构体里面friend bool operator(a,b)return a.a原创 2015-07-14 16:11:53 · 436 阅读 · 0 评论 -
2015年acm省赛
作为大一的我,很荣幸被老师邀请去参加这次比赛,在上次湘潭邀请赛上被虐得。。。。哈哈______之后,来到省赛,经过一个暑假的练习,思维上是好了些许,但还算是个菜鸟,队里有一位学长(专心搞项目,有一年没有玩acm了)我还有一个同学,我们这队是学校的4队啊,新生队,来取经验的。来到郴州,像小朋友去城市一样转圈,湘南学院还是不错的(听说伙食不错,可惜。。) 比赛那天没睡好,住宿条件有点。。但是我个人原创 2015-09-04 12:28:09 · 500 阅读 · 0 评论 -
叉积与点积
计算几何是算法竞赛的一大块,而叉积是计算机和的基础。首先叉积是计算说向量之间的叉积,那么我们可以这样定义向量,以及向量的运算符重载。[cpp] view plaincopyprint?struct Point { double x,y; Point(double x=0,double y=0):x(x转载 2015-08-16 18:06:15 · 752 阅读 · 0 评论 -
三角型的性质
三角形顶点坐标:A(x1; y1);B(x2; y2);C(x3; y3);④重心G(x4;y4);x4=(x1+x2+x3)/3;y4=(y1+y2+y3)/3;⑤外心W(x5;y5);根据外心到各顶点的距离相等:AG=BG;AG=CG;即:Sqrt[(x1 - x5)^2 + (y1 - y5)^2] == Sqrt[(x2 - x5)^2 + (y2 - y5)^2],Sqr原创 2015-08-17 14:14:00 · 427 阅读 · 0 评论 -
背包总结
关于背包问题的讲解,有篇DD牛写的《背包问题九讲》,凭我这水平怎么说也没有这篇文章说的清楚,直接看文章吧。我只把我认为的比较概括的东西写出来。看完背包九讲再来看这个会比较好,我这个只是对背包九讲的总结加上一点点自己的总结和一些经典题目。标注:下文n即为物品件数,c[i]表示第i件物品的耗费(体积),V为背包容量,a[i]表示第i件物品的价值 dp[]数组存放的即为最优解。一、01背包原创 2015-08-16 14:51:42 · 464 阅读 · 0 评论 -
二分查找
int BinSearch(int Array[],int low,int high,int key/*要找的值*/) { if (low<=high) { int mid = (low+high)/2; if(key == Array[mid]) return mid; else转载 2015-07-21 20:41:58 · 285 阅读 · 0 评论 -
母函数入门
母函数(Generating function)详解— Tanky Woo在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一转载 2015-07-20 16:13:44 · 356 阅读 · 0 评论 -
并查集
并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?我跟你很熟么?)来看一个实例,杭电1232畅通工程首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点转载 2015-07-31 15:04:15 · 288 阅读 · 0 评论 -
博奕
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。转载 2015-07-20 14:57:42 · 623 阅读 · 0 评论 -
C/C++申请空间与释放空间的两种方法
1. C语言的函数malloc和free (1) 函数malloc和free在头文件中的原型及参数 void * malloc(size_t size)动态配置内存,大小有size决定,返回值成功时为任意类型指针,失败时为NULL。 void free(void *ptr)释放动态申请的内存空间,调用free转载 2015-07-16 10:54:52 · 15531 阅读 · 0 评论 -
搜索 剪枝
搜索算法的通用优化方法[DFS][搜索剪枝]在很多情况下,我们已经找到了一组比较好的解。但是计算机仍然会义无返顾地去搜索比它更“劣”的其他解,搜索到后也只能回溯。为了避免出现这种情况,我们需要灵活地去定制回溯搜索的边界。*例题 计算机网络连接要将n(n求:一种连接方式,使需要电缆的长度最短。分析这个题目用回溯搜索来解决。但是,由于回溯搜索的搜索量比较大,转载 2015-08-09 22:12:57 · 454 阅读 · 0 评论 -
函数库的排序调用 sort qsort
两个都在C++函数库里面#includeusing namespace std;sort(a,a+n,cmp); cmp可加可不对 对数列从某位置到某位置进行排序如果不加cmp则按小到大排 cmp是排序的条件bool cmp(int x,int y) return x>y;这里就按大到小排 传入的类型可以是各种类型 跟A数组原创 2015-07-15 10:15:33 · 469 阅读 · 0 评论 -
匈牙利算法
用于求最大匹配问题bool find(int x){ int i,j; for (j=1;j<=m;j++) { //扫描每个妹子 if (line[x][j]==true && used[j]==false) //如果有暧昧并且还没有标记过(这里标记的意思是这次查找曾试图改变过该妹子的归属问题,但是转载 2015-07-16 09:12:04 · 426 阅读 · 0 评论 -
归递排序 T(nlgn)
主要对数目多的数 拆分再排 总的来说耗时还蛮少的 具体函数的操作看图片看了一下书 写了一个 感觉不是特别好 毕竟一般调函数sort#include #include void bin(int *a,int *b,int start,int mid,int end){int k=0;int i=start,j=mid,m=mid+1,n=end;while原创 2015-06-10 20:45:30 · 749 阅读 · 0 评论 -
小巧妙
约瑟夫问题#include #include int main( void ){ int n, i, m, p,t; while(~scanf("%d %d", &n, &m)) { t=1; i=0; while( ++i <= n ) { p = i * m;原创 2015-12-22 18:41:59 · 529 阅读 · 0 评论