随笔分类 - 图论
摘要:http://poj.org/problem?id=3469Dual Core CPUTime Limit:15000MSMemory Limit:131072KTotal Submissions:15941Accepted:6926Case Time Limit:5000MSDescriptionAs more and more computers are equipped with dual core CPU, SetagLilb, the Chief Technology Officer of TinySoft Corporation, decided to update their f
阅读全文
摘要:这次深深体会到ac的代码不一定正确。呵呵。cry_mas前一段才和我说起。我还半信半疑。话说好久以前他就说过类似的话,当时水平太菜了。现在深深体会到ac的代码不一定正确。这要坑死了啊,正式比赛碰到真是惨到家了。以后我还是多想点数据的说。多想2组。去年省赛的时候是我第一次认认真真的想其他的数据,现在应该培养这方面的能力,要不然比赛的时候很吃亏。还有做题前先想想时间复杂度。貌似还是去年比赛的时候那题背包我数据过了不过结果是wa的。嗨涛神说他们看到了果断放弃,我这个小菜鸟当时果断和玲姐,艺哥说我会,敲了下最终以3wa告终,到现在还郁郁寡欢,郁闷了怎么会wa,前几天看到题,还是会用以前的方法做,我觉得
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1213题意就是说,有n个人参加的party,要准备多少张桌子,使得任意桌子上坐的人都是有联系的。所谓有联系的就是说:比如A 和 B,如果他们两认识,或者存在一些人 C D E...使得A 、B能够认识。求最少要准备的桌子的数量。解法:直接用并查集算法解决。分析:把昨天的代码拿来稍微改了下,果断ac。水题飘过。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <stri
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1241题意:求连通分量的个数,8个方向。做过好几次了,表示对dfs,bfs真没感觉。嗨。哭死。。。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream&g
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1233题意:连接所有村子的最短路径。分析:最小生成树。注意:双向图。嗨,表示水题不认真又wa了 3次。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1875题意:求链接所有岛屿的最小生成树。中文题就不说了。分析:kruskal算法。用sqrt的时候ce了一次。然后数组开小了re了一次。不应该犯这种低级错误了。反思己过。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <ti
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3666题目描述:http://blog.sina.com.cn/s/blog_64675f540100l52h.html给你一个N*M的矩阵,给你两个数L和U(L <= U)问你是否存在这样的N+M个数字(计作A1….AN, B1…..BM),使矩阵中任意元素Xij,满足:L <= (Xij * Ai) / Bj <= U输出YES OR NO。解题报告:转换成:Xij * Ai – U * Bj <= 0 和 L*Bj – Xij * Ai <= 0差分约束中的xi – xj
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3592题意:有N个人按照1-N 的顺序排成一排,给你X个关于他们位置的关系,如:a, b ,c,则说明编号为a的人在标号为b 的人的前面(话说我实在没在原文中看到a必须在b前面,除非这句Assume that there are N (2 <= N <= 1,000) people numbered 1..N who are standing in the same order as they are numbered. It is possible that two or more person
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2680题意:求起点到终点的最短距离,注意这题是有向图,还有这题先给的是终点,起点有多个(如果是无向图的话先给起点终点是一样的,先给终点细细体会稍微有点区别)。分析:先给终点,起点有多个。我一开始知道是有向图但就是按照无向图做的,好吧,wa了。然后该了该,还是wa。认真读题觉得没问题又提交了还是wa。然后觉得这题很有意思,应该注意什么东西。想到了以前都是先知道起点,然后求dis[end],发现建图的时候要反过来,edge[v][u]=w.一开始就看到有重边,早早就出来了重边,但是数据还是没过,郁闷了,不知道怎么
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1548题意:一个特别的电梯,按up可升上k[i]层,到大i+k[i]层,down则到达i-k[i]层,最高不能超过n,最低不能小于1,给你一个起点和终点,问最少可以按几次到达目的地。分析:把n转换为一个n*n初始化为0的数组,后对每一层可到达的楼层加上一条边为1,这样就转换为求两点之间的最短路问题。感想:建图是关键,脑子里面要有图的思想就好办了,一开始也不敢敲,但是笔画了几下,图就出来了,自信心大增啊。这题能用最短路径做真是神奇,网上有用搜索做的可以借鉴一下。话说:这题wa了一次,在else if 那边。该死
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1142题意:他的办公室用1表示,家用2 表示,从1到2,中间可能会经过其它节点,而该节点可走的原则是:假设他此时在A处,B与其相邻,只有当B到2 路线中存在一条比A到2 的任意一条路径都短的路径,才能走B。问这样的路线有多少种?分析:记忆化搜索不太会,这题难度就在这里。有挑战好玩。下面是大神的分析。欣赏下。题目大意:寻找一共有多少条符合题意的路。能够从点A走到点B的要求是:点A到终点的最短路 > 点B到终点的最短路。 也就是说:从终点出发,求每一个点的最短路,然后那些最短路的值记录起来,作为能否通过的判
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1770题意:参看图论200分析:差分约束关键还是建图。嗨,图。而且差分约束感觉还有数学的思想。偶数学不好。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#i
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1385题意:求起点到终点的最短路,注意点是有权值的。然后要按找字典序输出路径。分析:说实话这题卡了我好久,从数据没过到坑坑爹爹的把数据过了,再到改啊改一直wa,我已经很满足了因为我耐住了性子,其实我一点也不希望他ac,要不然太没劲了。好吧这题wa了我18次。关键的地方就是按照字典序输出,由于我以前是按照另外一种方法存储路径导致一直wa。现在换一种方法。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1598题意:中文的就不说了。分析:题目要求从起点到终点的最大值与最小值的差最小,第一感觉是floyd,但是要保存经过的每条边,这就卡住了。后来发现从起点到终点也可以用并查集做,想想从起点到终点肯定要属于同一个集合,这就行了。其实这题就是用的kruskal的思想。具体看代码。还有一个地方我觉得很奇怪为什么下面两个union会得到的结果不一样,第一个ac,第二个Runtime Error(ACCESS_VIOLATION)View Code void Union(int R1,int R2){ int r1...
阅读全文
摘要:题意:有A~K共9种类型的地步,每耕田上方的沟渠是不合的(它们连接的出口不合)。然后由这些类型的田构成一个n*m大小的更大的田,因为相邻两个地步的沟渠可能可以相通(有接口),所以只要相通的那些地步只须要一个水源就可以了。求起码须要几许个水源。解析:可用bfs,dfs做,不过用并查集更便利点。 用并查集只须要断定一个田四周的四个田,若是有接口,那么就把这两个田归并成一棵树,最后断定几棵树即可。分析:实在不会dfs啊。嗨,真心不会。。。。就是没感觉。好吧,借口太多了,掌嘴。View Code // I'm lanjiangzhou//C#include <stdio.h>#in
阅读全文
摘要:题意:求链接所有点的最短路径。分析:最小生成树,kruskal.嗨。居然wa了2次。受不了啊。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream>#include <algorithm>#include <cstd
阅读全文
摘要:http://poj.org/problem?id=3615题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream>#include <
阅读全文
摘要:http://blog.sina.com.cn/s/blog_99ca2df50101jtk3.html这里前几天刚刚写过就不写了。题意:判断是否存在负权回路。用spfa.View Code //ac// I'm the Topcoder//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>#include <time.h>//C++#include <iostream>
阅读全文
摘要:http://poj.org/problem?id=2457题意:求起点1到终点m的最短距离。这个可以spfa||dijkstra。这题关键的是要输出从1--m走过的路径。用path[]记录下,每一步的祖先,用shortest[]逆序输出即可。这题re了n次。到现在也不理解,为什么先if(dis[m]==INF){//为什么先判断就不会re.不明白 printf("-1\n"); continue; }这个就没问题。View Code // I'm lanjiangzhou//C#include <stdio.h>#include <s...
阅读全文
摘要:题意:求各个点到起点1的距离是否<=m,满足的话,就按从小大到的顺序输出结果。分析:dijkstra。求起点到各个点的最短距离和m判断一下就行了。坑爹的是我wa了13次。就是在一个下标出问题的,白白费了4个小时。不认真。就是下面的sum.原因自己分析。嗨,死在这里了。我把i放在coutnts[]里面了,原因还要说吗????View Code // I'm lanjiangzhou//C#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#
阅读全文

浙公网安备 33010602011771号