自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 问答 (1)
  • 收藏
  • 关注

原创 一个人的旅行 hd2066

简单的一道题,但是还是看了下别人的代码才做出来,水,这个题方法挺多的,但是最开始看到这个题想用folyd,但是会超时,因为是1000,然后想了想dij,然后试了下,发现个大问题,就是dij是对于一个点的所有最短路径,而最开始的出发点又不确定,当把这些出发点输入进去后,我凌乱了,结果还是用了folyd,稍微剪枝,然后遍历寻找符合的结果。#include #define inf 9999999

2016-10-31 20:59:47 309

原创 bellman-ford

bellman-ford是为了解决负权边的问题,而这个问题dij却不能解决。基本代码#include using namespace std;int main(){ int dis[100],s[100],u[100],v[100]; int n,m,i,j; cin>>n>>m; for(i=1;i<=n;i++) { cin

2016-10-31 15:55:15 250

原创 Dijkstra算法-松弛边寻找一个点到任意点的最短距

floyd -w 是求任意点到任意点的最短距离,因为复杂度较高,所以在只求一个点到任意点的距离的时候容易超时,Dijkstra算法就是解决一个点到任意点的距离的问题,于floyd-w的算法一样用临界矩阵存储图,我们还需要一个一位数组来存储原点(1)到任意点的距离然后依次对dis中最小的数的点开始寻找结点然后开始依次松弛动态图为对于下图没有出边所以代码中i

2016-10-27 20:26:31 2471

原创 Floyd-Warshall

这个算法是用来求任意两点的最短距离问题,可以用dfs和bfs但是需要搜索所有点到所有点的距离,即对任意两点是用dfs或bfs会用很多次,所以有了这个算法,时间复杂度是o(n^3),对于下面的图,画出临界矩阵存储法当我们规定,任意两点只允许经过点1的时候的存储最终核心代码 for(k=1;k<=n;k++)  {   for(i=1;i<=n;i++

2016-10-27 18:24:45 296

原创 图论dfs和bfs的感想

对于最开始的图的基本遍历dfs和bfs的顺序不一样,但是遍历的终止条件都是一样的,那就是if(sum==n) return;当作题的时候有得是无向图有得是有向图,他们的区别就是在初始化地图的时候,在初始化map[a][b]=?后用不用初始化map[b][a]=?(无向图),因为她们是在寻找到达目的地n的最短的路径所以对于dfs终止条件是if(cur==end),判断sum于min,对于bfs终止条

2016-10-27 17:51:16 356

原创 最短航班 bfs

无向图,从一个地方到达另一个地方,给出了航班路线问怎么走最进#include using namespace std;struct node{ int x; int s;};struct node que[10001];int map[1000][1000];int visit[1000];int main(){ int i,j,n,m,k,g;

2016-10-27 17:40:17 658

原创 城市地图-图的深度优先遍历

因为这个图是有向图,无向图和有向图代码很像,当这个图是无向图的时候,需要把输入的改成map[a][b]=c ,map[b][a]=c这样就是无向的,当他是无向图的时候最短路程不是1-2-5而是1-3-5#include using namespace std;int visit[101];int map[101][101];int n,m,a,b,c,cur;int dis,min_

2016-10-26 20:41:56 460

原创 无向图的临接矩阵存储法

#include using namespace std;int visit[101];int map[101][101];int n,m,a,b,sum=0;void dfs(int cur){ int i; cout<<cur<<' '; sum++; if(sum==n) return; for(i=1;i<=n;i++)

2016-10-26 19:35:30 414

转载 杭电分类

注:网上搜的第一篇    1001 这个就不用说了吧1002 简单的大数1003 DP经典问题,最大连续子段和1004 简单题1005 找规律(循环点)1006 感觉有点BT的题,我到现在还没过1007 经典问题,最近点对问题,用分治1008 简单题1009 贪心1010 搜索题,剪枝很关键1011 1012 简单题1013 简单题(

2016-10-26 19:05:22 207

原创 special number(act book)二分模版在此

二分思想很简单,但是不知道做题怎么样,一道简单的题这道题如果不用二分而是枚举的话,会超时,因为时间是1s,所以先打表把所有special number ,然后二分查找第一个比他大的。#include #include using namespace std;int arr[10000000];bool check(int p){ int t; bool jude[

2016-10-26 17:25:50 460

原创 hrbust 1011 Catch That Cow

这道题用广搜方便,感觉用深搜的话,很容易在错误方向浪费时间,假如说数据是1,6如果用深搜,那很有可能在1到负数的这个本来就不能的区间内进行搜索,而且还是搜索到底,因为只有搜索到底的时候才能知道会不会到达6,而广搜的话,把在该点的所有情况都放到队列里,然后该点出队,在对入队的几个点判断符不符合,如果不符合就在扩展#include #include #define MAX 200001usi

2016-10-25 20:47:15 203

原创 啊哈报道探险(基础bfs)

最基础,无技巧#include using namespace std;struct node{ int x; int y;};struct node que[401];int map[50][50];int visit[50][50];int next_[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int n,m,tx,ty,star

2016-10-25 18:02:57 285

原创 啊哈炸弹人(dfs bfs)

因为这个题当放置炸弹可以炸掉敌人最多的时候,人物不一定能走到那个位置,所以搜索任务可以走的位置,然后计算这点上可以消灭多少敌人特殊注意以下两个搜索都别忘记对最开始的起点进行getboom和visit,就相当于假设出发点就为可以消灭敌人最多的点bfs#include using namespace std;struct node{ int x; int y;};

2016-10-25 17:52:25 484

原创 啊哈迷宫bfs解决方法

代码如下,忘记的时候回看啊哈算法bfs,感觉学了dfs看bfs轻松了很多#include #include using namespace std;struct node{ int x; int y; int s;};struct node que[2501];int n,m,startx,starty,x,y,count_;int map[51][51];

2016-10-24 20:59:34 255

原创 hrbust 1143 泉水(简单dfs)

基础题,无陷阱,不需要考虑输入的是不是小数字注意:别老手欠初始化map为0#include #include using namespace std;int n,m,p1,p2,count_;int map[1005][1005];int visit[1005][1005];int next_[4][2]={{0,1},{1,0},{0,-1},{-1,0}};void d

2016-10-24 19:59:50 394

原创 POJ1068-Parencodings

转载请注明出处:優YoU http://user.qzone.qq.com/289065406/blog/1299127551模拟的题型,基本难度不大,关键读懂题意:对于给出的原括号串,存在两种数字密码串:1.p序列:当出现匹配括号对时,从该括号对的右括号开始往左数,直到最前面的左括号数,就是pi的值。2.w序列:当出

2016-10-24 17:44:54 177

原创 深度搜索dfs感悟

深搜的基本框架:void dos(int step){   判断边界  尝试每一种可能for{    继续下一步 dfs(step+1)  }返回}1045题#include using namespace std;char a[5][5];int max1=0,n;int check(int x,int y){ int i; fo

2016-10-17 18:05:38 445

原创 大斐波数

#include #include #define max 1005int a[max][max];int main(){ int t,n,i,j; memset(a,0,sizeof(a)); a[1][1]=1;//二维数组,高维表示项数,低维表示长度 a[2][1]=1; int sum; int carry=0; for(i

2016-10-13 19:26:29 355

原创 大数(加减乘除)

#include #include using namespace std;// 实现大数相加 结果存放在num中void bigIntergerAdd(string &num, string add) { int goBit = 0; // 存放进位 // 先交换下顺序 加数的位数要比较少 if (num.length() < add.

2016-10-13 18:29:02 475

原创 c++ string头文件

标准c++中string类函数介绍注意不是CString之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据

2016-10-13 18:25:36 65986 3

原创 xcode新手经验

1 strlen不能用int 要用long (记得加string)

2016-10-12 21:21:44 620

原创 c++全排列函数

这个函数的功能实在是强大,很多题都可以用c++全排列:http://www.cnblogs.com/xudong-bupt/p/3662986.html

2016-10-12 20:34:25 553

原创 不要62

http://acm.split.hdu.edu.cn/showproblem.php?pid=2089这个要打表,在判断每个位数的时候用%取最后一个数字,如果是4就false,如果不是4,q/=q,一直到q为0为止。放在一个数组里面,判断数组中有没有62

2016-10-11 19:42:31 230

原创 产生冠军 set容器使用

http://acm.split.hdu.edu.cn/showproblem.php?pid=2094

2016-10-11 18:38:26 234

原创 汉诺塔问题

(1)普通汉诺塔:2*n-1;(2)汉诺塔问题3:http://acm.hdu.edu.cn/showproblem.php?pid=2064      3*n-1;有的时可能直接用pow不能通过,可以循环

2016-10-10 13:12:05 276

原创 Rectangles 简单几何计算

题目http://acm.hdu.edu.cn/showproblem.php?pid=2056代码http://blog.csdn.net/vinacky/article/details/8982457解析http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=29493&messageid=1&deep=0

2016-10-09 19:59:07 379

原创 错排&&递归问题

错排问题详解:http://blog.sina.com.cn/s/blog_ace0c3ed01016zcs.html错排问题1 上帝老天爷 http://acm.split.hdu.edu.cn/showproblem.php?pid=2048注意变量范围

2016-10-08 18:46:58 370

空空如也

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

TA关注的人

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