随笔分类 -  ssp阅读计划

Thanks to Jeffrey Zhao. https://github.com/JeffreyZhao/ssp
摘要:一个迷宫,如何用DFS找出口。虽然跟大多数人的做法不一样,为了程序化,我把它复杂化了一点……将迷宫的每一个格子用一个结构体Node表示,一个格子有上下左右四个边界。输入邻接矩阵->根据边界在第一行第一列最后一行最后一列找到入口和出口->从入口开始DFS,直到找到出口为止->输出路径信息。#include <iostream>using namespace std;#define Max 1000/*构成迷宫的基本元素:Node.*/ struct Node{ Node() { vis = ans = 0; } bool up,down,left,... 阅读全文
posted @ 2013-05-20 15:52 Norcy 阅读(2011) 评论(1) 推荐(0) 编辑
摘要:并查集+贪心算法。/*对于稀疏图来说,用Kruskal写最小生成树效率更好。输入:边的起点,终点,权值 */#include <iostream>using namespace std;#define Max 100struct Edge{ int start,end,w;};Edge e[Max];int cnt, father[Max];void init(){ cnt = 0; for (int i = 1; i < Max; ++i) { father[i] = i; }}int find(int x){ if... 阅读全文
posted @ 2013-05-05 17:14 Norcy 阅读(226) 评论(0) 推荐(0) 编辑
摘要:A:生成树B:未被访问过的点的集合pre[i]:生成树中i的前驱节点。A中的dis[i]:生成树中包含点i的边的长度。B中的dis[i]: i到A的最短距离vis[]:标记是否遍历过(是否属于A)Prim算法的思想1.任选一点,不妨选择第一个点,加入生成树A。2.遍历B,寻找一点u,使其到A的距离最小(就是A中也找了一点v)。添加u到A中(vis)。记录这条边及其权值(pre,dis)。3.更新与u相连的点的dis和pre4.循环直到遍历所有可达的点。View Code #include <iostream>#include <climits> using namesp 阅读全文
posted @ 2013-02-07 10:29 Norcy 阅读(288) 评论(0) 推荐(0) 编辑
摘要:哈密顿回路好多,其实不是很难,但是看了一天了。。看一会睡一会,什么状态啊。。View Code /*【题目来源】http://poj.org/problem?id=2438【题目分析】有敌对关系的小朋友,不能坐在一起。最后围成一个圈,吃饭。。。将小朋友看成点,有敌对关系的看成没有边,最后构成一个回路。哈密顿回路。 【小小总结】 哈密顿回路充分条件:无向连通图中任意2点度数之和大于等于顶点数,则必定存在哈密顿回路。 思路分析: 1.任意找两个相邻的节点S和T,在它们基础上扩展出一条尽量长的没有重复节点的路径。也就是说,如果S与节点v相邻,而且v不在路径S->T上,则可以把该路径变成v-&g 阅读全文
posted @ 2013-01-25 20:31 Norcy 阅读(5187) 评论(1) 推荐(0) 编辑
摘要:View Code /*【题目来源】http://poj.org/problem?id=2230【题目分析】输入顶点数n,边数m,输入m条边,无向图,从顶点1出发,每条边正反向走1次,求点的遍历顺序。多个答案输出一个就行。【思路分析】欧拉回路问题。总结,求解欧拉回路方法:构造邻接表,从顶点1开始,以点深搜,搜到不能再搜,搜到天荒地老,最后输出点既是欧拉回路。(当然也可以用链式前向星)*/#include <iostream>#include <vector>using namespace std;#define Max 10001vector<int> v[ 阅读全文
posted @ 2013-01-24 16:30 Norcy 阅读(284) 评论(0) 推荐(0) 编辑
摘要:/*【题目来源】http://acm.whu.edu.cn/land/problem/detail?problem_id=1110【题目分析】几张图片叠在一起,给出堆叠后的情况,要求出所有可能的从下到上的堆叠顺序。【思路分析】 1.题目已经很明确的告诉每个边框的每条边,至少会有一个字母露在外面所以遍历整张图,确定每个边框的范围。 只需确定左上角和右下角即可。2.根据每个边框的范围再遍历,若应该出现A的位置出现了B,那么B一定在A上面。这样各个边框的上下顺序就求出来。若B在A上面,那么记录A->B。3.拓扑排序4.要求输出所有能情况且按字母顺序输出。那么只要按照字母顺序使用DFS(递归)来 阅读全文
posted @ 2013-01-22 21:26 Norcy 阅读(1262) 评论(0) 推荐(0) 编辑
摘要:前几个星期落下的终于要开始一一补上啦~~这个寒假坚持把这本书看完!机考最后一道题就这么简单,无语,早知道先做这道好了。最简单的拓扑排序应用,判断一个有向图是不是无环的。标准的拓扑排序代码,《图论与应用》里代码风格不是很喜欢,所以还是觉得这个比较好看一点。View Code /* (1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它. (2)从网中删去该顶点,并且删去从该顶点发出的全部有向边. (3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止.*/#include <iostream>#include <cstring>using namespace 阅读全文
posted @ 2013-01-21 13:44 Norcy 阅读(269) 评论(0) 推荐(0) 编辑
摘要:View Code /*【题目来源】http://soj.me/show_problem.php?pid=1004&cid=567【题目分析】 与longth way 类似 这个好象就是传说中的六度人脉,你只要通过六度人脉就可以找到世界上的任何一个人。假设一个人一生会认识N个人,那N+N^1+N^2+N^3+N^4+N^5+N^6>=世界总人数。给定一些边确定一个图,即给定一些点之间的连通情况,求出各点到0的最短路径 【思路分析】 1.邻接表构图 2.以0为树根,层次遍历,求出其他各点的深度 即为所求 【小小心得】 刚开始还去用struct表示Node其实只用一个邻接表就行了 邻 阅读全文
posted @ 2012-12-15 16:20 Norcy 阅读(1014) 评论(0) 推荐(0) 编辑
摘要:View Code /* 【题目来源】http://soj.me/show_problem.php?pid=1003&cid=567【题目分析】给定一些边确定一个图,即给定一些点之间的连通情况,保证给定的图没有回路,要求输出该图存在的最长路径。 【思路分析】. 根据给定信息构造图,用邻接表表示。(邻接矩阵明显很麻烦且效率不高) . 将每一个顶点看成是树根,求出树的高度。. 得到一系列树的高度,最大的那个就是图中存在的最长路径。嗯对的。 【陷阱分析】.不应该被数据蒙骗,比如只给两条边但顶点不一定是1,2,3而有可能是1,99,100之类,所以数组开最大(题目范围1-100,所以开个105 阅读全文
posted @ 2012-12-15 15:52 Norcy 阅读(682) 评论(0) 推荐(0) 编辑
摘要:/*【题目来源】http://soj.me/show_problem.php?pid=1005&cid=567【题目分析】 国际象棋棋盘上,给定起点和终点,求出马(knight --!)起点到终点 所需要走的步数【思路分析】 打表:构造一个64*64的表格 行和列都为a1,a2……h7,h8 (i,j)表示从点i到 点j所需要走的最小步数。注意这里的i,j均抽象为一个点,如(1,13) 表示 i = 1 j = 13 也就是 (a1,b5) 打表的复杂度较高。但打完表后,以后每输入一个测试数据,输出结果的时间复杂度都是O(1). 唯一要注意的地方是坐标的转换 0表示a1 8表示b1 … 阅读全文
posted @ 2012-12-15 15:31 Norcy 阅读(467) 评论(0) 推荐(0) 编辑
摘要:最近效率好差好差,大学读多了,人不爱思考了,迟钝了,注意力也很难集中了。总是不能很专心很坚持的去完成一件事情。比如课本,比如作业,比如刷题,即使是电影小说也很难静下心来看完。。。图的表示方法:1.邻接矩阵(太简单不讨论) 2.前向星 3.邻接表(动态建表,vector) 4.链式前向星(静态建邻接表表)其中链式前向星最好。空间少,可存储重边,可以处理点边数量多的情况,没有动态建表的内存管理所以更安全。除了不能直接用起点终点来确定是否有边外,链式前向星几乎完美。View Code /********前向星**********///n 点最大值//m 边最大值 int head[n];struct 阅读全文
posted @ 2012-12-02 20:23 Norcy 阅读(222) 评论(0) 推荐(0) 编辑
摘要:第二道例题。View Code /*【题目来源】 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1500【题目分析】 给定k叉树的前序遍历和后续遍历,输出一共有多少种K叉树。 【思路分析】 前序遍历和中序遍历可以唯一确定后序遍历。后序遍历和中序遍历可以唯一确定前序遍历。前序遍历和后序遍历不能确定唯一中序遍历。(有多种可能)1.前序遍历中:第一个元素就是根。 后序遍历中最后一个元素是根。所以第一件事就是把2种遍历的根删除。2.删除后,前序遍历的第一个元素是根的第一棵子树(注意措辞)的根3.后序遍历中找到其位置,那么从开头 阅读全文
posted @ 2012-11-24 20:00 Norcy 阅读(868) 评论(2) 推荐(0) 编辑
摘要:啊啊啊啊,今天有事没能去听老赵的讲座好遗憾。上一次是范玮琪张敬轩的演唱会,开在家门口的演唱会都没去。这次是ssp计划发起者的讲座,同样是开在家门口的,我都与之插肩而过。从这一篇开始就是正式的“技术”博客了。姑且叫“技术”吧,词穷,我知道技术含量不高。。若有任何想法,欢迎大家一起交流讨论。今天看了《ACM-ICPC程序设计系列:图论及应用》第二章关于树的部分。主要是关于一些树的定义和一些算法。书上的例题只给了思路没有代码。我在网上找到了原题。View Code /*【题目来源】 http://acm.cs.ecnu.edu.cn/problem.php?problemid=1284【题目分析】 阅读全文
posted @ 2012-11-24 19:30 Norcy 阅读(1496) 评论(0) 推荐(0) 编辑
摘要:“假如您是一个没有任何收入的学生,可能购买大量书籍的确会略有不便,而且我可以理解所谓的“勤工俭学”其实效率很低,并非人人都能感到舒服。此外,可能还有心理作用在里面,例如钱用来泡MM就比买书来得爽快”个人很欣赏这句话。于是我抱着尝试的心态参与了这项ssp阅读计划。首先感谢Jeffrey Zhao老师的热心帮助。这个阅读计划确实已经不是免费阅读这么简单了,现在参与者每星期都要至少更新一篇读书笔记。一是压力,有了压力就是有了读书的动力,无可否认。二是练习写技术博客,即使一星期一篇,一个月一年下来也挺多的。三是分享交流,即使没有受益匪浅,也至少应该能增长一点见识。这个分类就是专门为ssp阅读计划开的。 阅读全文
posted @ 2012-11-19 13:43 Norcy 阅读(394) 评论(0) 推荐(0) 编辑