2012年3月21日
摘要: 简单dijkstra,给了起点集合,一个终点。求起点到终点的最短距离。 n个点,(1..........n)。设置一个虚拟起点0,虚拟起点到起点集合的距离都是0,然后就用模板,以0为起点,求出到终点的最短距离。 本来是抱着轻松愉悦的心情来刷他的,结果一个超级恶心的第几错误让我找了半个小时。好吧,以后,出现莫名其妙是WA就给我一句句的看代码。最终肯定会找出该死的bugAC:#include<stdio.h>#include<string.h>#define inf 100000000int map[1010][1010]; //注意这道题是单向边, 而且我设置 0 为虚拟 阅读全文
posted @ 2012-03-21 20:36 hrbust_09zhangyabin 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 很简单的一道dijkstr模板题,硬是让我RE了一个上午,可恨!这道题map[i][j]的取值范围是[0,1]。结果,我把inf设置为0!kao,莫名其妙的RE接踵而至。快整死我了,后来吧inf改为-100。立刻AC!吐血啊以后在没把握的情况下,远离边界。AC:#include<stdio.h>#define inf -100 //问题就在这儿double map[1010][1010]; //注意重边 double d[1010];int s[1010];int n;double dij(int v,int e){ int i,j,pos; double max; for(i=1 阅读全文
posted @ 2012-03-21 12:36 hrbust_09zhangyabin 阅读(262) 评论(0) 推荐(0) 编辑
  2012年3月20日
摘要: 无聊,临走时候刷个水题。有公式,不说了。sum = n * 1 / 1 + ( n - 1 ) * 2 * 1 / 2 + ( n - 2 ) *2*1/3+.......+(n-i+1)*2*1/i;AC:#include<stdio.h>int main(){double sum;int n;int i;while(scanf("%d",&n)!=EOF&&n!=0){sum=n;for(i=2;i<=n;i++)sum+=2.0*(n-i+1)/i;printf("%.2lf\n",sum);}return 阅读全文
posted @ 2012-03-20 21:39 hrbust_09zhangyabin 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 简单的dijkstra模板题。很简单,找一个起点到终点的最短路径。10几分钟就敲好代码了。一交,WA!无语看了disscus,被指点有重边。查,又是重边这个玩意儿。搞什么,读题真读不出来! 然后筛选了一下重边,就AC了。还有一点啊,就是起点等于终点时,要输出0,别输出inf了。其中,我加了一个剪枝条件,if(pos==e||min==inf) break;完全正确,而且时间从15ms 提高到了0 ms。(高兴)AC:#include<stdio.h>#define inf 100000000int map[210][210];int d[210];int s[210];int n, 阅读全文
posted @ 2012-03-20 18:37 hrbust_09zhangyabin 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 其实非常没有必要像刚刚那样,可能是没有真正理解dij吧。 事实上,对每个起点调用dij算法后,每个终点的最短路长度都已经出来了。对于每个起点,从这些终点的最短路中选出最最短路就可以了。 然后在比较每个终点,即求得最小值。照这个思想敲了个代码一交,781ms,才快了110ms。 不应该啊~然后比较了一下网上的代码,发现我没有剪枝。加上条件 if(min==inf) break; // 剩余的点距离都为无穷远时,结束再一交,78ms。好爽,终于ok了。AC:#include<stdio.h>#include<string.h>#define inf 100000000int 阅读全文
posted @ 2012-03-20 14:53 hrbust_09zhangyabin 阅读(1121) 评论(0) 推荐(0) 编辑
摘要: 这是一道多源点的dijkstra模板题,我整整做了一上午,交了14遍,过了4遍(呵呵,很疯狂啊!)总的来说,收获颇丰。应该算完全掌握了这种算法。这是第一次过的代码,用的超级笨的方法,对每个起点和终点分别调用dij算法。放在low[i][j] (代表第i个点到第j个点的最短距离)中,最后再从low[i][j]找出最短的路径输出。 890ms过的。呵呵,很强,几乎没有比我更慢的啦!嘿嘿(不好意思) ,代码也很长。AC:#include<stdio.h>#include<string.h>#define inf 100000000int map[1051][1051];int 阅读全文
posted @ 2012-03-20 14:43 hrbust_09zhangyabin 阅读(394) 评论(0) 推荐(0) 编辑
  2012年3月19日
摘要: 昨晚掌握了dijkstra算法,就在hdu找了一道模板题来刷。题很简单,完全就是数据结构上的算法模板敲的。写完一交,WA! 无语,还以为第一次敲这个算法,没理解呢!又上网上找别人能过的算法敲了一个,一交,又WA!,表示很无奈啊!一直交了5,错了5次,快疯了。到最后发现,题目描述骗人,他说c《=1000.事实上c超大。最后设置 inf=100000000,才AC! 唉,这算什么啊算法很简单,dijkstra模板AC:#include<stdio.h>#include<string.h>#define inf 100000000int map[105][105];int d 阅读全文
posted @ 2012-03-19 19:32 hrbust_09zhangyabin 阅读(307) 评论(0) 推荐(0) 编辑
  2012年3月18日
摘要: 今天打比赛,好惨啊!就A了一道题,NND全部是字符串, 哥不会字典树,不会map,被虐的好惨啊! 可恶,这种情况很久都没出现了。逼我是吧!好吧,还想等会儿再学map呢! 这下好了,不用等了,三天之内掌握map,干掉这几道题!星期一,迪杰斯特拉!星期二,floyd!星期三,map!星期五,字典树! 阅读全文
posted @ 2012-03-18 20:22 hrbust_09zhangyabin 阅读(136) 评论(0) 推荐(0) 编辑
  2012年3月17日
摘要: 一个很简单的模板题。中间遇到一个很低级的错误,让我调了半个小时。好了, prim到此为止。接下来还有foyd,djstl,好多啊!加快进度AC:#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>struct point{double x,y;}p[101];double map[101][101];int visit[101];double low[101];int n;int prim(){double min,result=0;int i,j,k,pos; 阅读全文
posted @ 2012-03-17 20:13 hrbust_09zhangyabin 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 水题,和1102一样。还不如1863呢!今天好像把连通工程这种类型的题刷光了!嘿嘿嘿,掌握prim后刷一道过一道,好痛快!AC:#include<stdio.h>#include<string.h>int map[101][101];int low[101];int visit[101];int n;int prim(){int i,j,k,pos,min;int result=0;memset(visit,0,sizeof(visit));pos=1;visit[pos]=1;for(i=1;i<=n;i++){if(i!=pos)low[i]=map[pos] 阅读全文
posted @ 2012-03-17 19:04 hrbust_09zhangyabin 阅读(250) 评论(0) 推荐(0) 编辑