随笔分类 -  数据结构

摘要:题意:有N个人,每个人的ID为1~N,部分同学A不希望部分同学B排在他之前,排好队之后,每个同学会找出包括自己在内的前方所有同学的最小ID,作为自己评价这堂课的分数。在满足这个前提的情况下,将N个人排成一队,求所有同学评价分数和的最大值。 分析: 1、A不希望B排在他之前,所以B要排在A之后,也就是 阅读全文
posted @ 2017-07-05 15:29 Somnuspoppy 阅读(175) 评论(0) 推荐(0)
摘要:题意:要从起点的石头跳到终点的石头,设The frog distance为从起点到终点的某一路径中两点间距离的最大值,问在从起点到终点的所有路径中The frog distance的最小值为多少。 分析: 解法一:Dijkstra,修改最短路模板,d[u]表示从起点到u的所有路径中两点间距离的最大值 阅读全文
posted @ 2017-04-01 18:50 Somnuspoppy 阅读(167) 评论(0) 推荐(0)
摘要:题意:某人在时刻0从原点出发,在第一象限范围内移动。已知每个炸弹爆炸的地点和时刻,炸弹爆炸可毁坏该点和它上下左右的点。不能经过已毁坏的点,也不能在某点毁坏的时候位于该点。不会被炸弹毁坏的地方是安全之处,问某人到达安全之处的最短时间。 分析:bfs即可。注意:1、某点多次爆炸或受爆炸点影响而毁坏,取最 阅读全文
posted @ 2017-03-17 22:16 Somnuspoppy 阅读(178) 评论(0) 推荐(0)
摘要:题意:有n个高度不同的直方图,求直方图内最大的矩形面积。 分析: 1、若当前研究高度大于栈顶高度,则直接入栈。否则,边处理栈内所有高度大于等于当前高度的元素边出栈,在此过程中,边累加宽度边以当前栈顶元素为高算出矩形面积,比较最大值,直到最终将比当前高度大的元素都捋平,将捋平后的高度即当前高度,和最终 阅读全文
posted @ 2017-03-14 10:46 Somnuspoppy 阅读(155) 评论(0) 推荐(0)
摘要:题意:有n(n <= 5000)个数的集合S,每次可以从S中删除两个数,然后把它们的和放回集合,直到剩下一个数。每次操作的开销等于删除的两个数之和,求最小总开销。所有数均小于10^5。 分析:按此操作,最终变成1个数,需要n-1次操作,要想总开销最小,就使每次取出的两数之和最小,优先队列。 阅读全文
posted @ 2017-02-06 18:34 Somnuspoppy 阅读(193) 评论(0) 推荐(0)
摘要:题意:有一个n个点的无向完全图,找一条最短路(起点终点任意),使得该道路经过E条指定的边。 分析: 1、因为要使走过的路最短,所以每个指定的边最好只走一遍,所以是欧拉道路。 2、若当前连通的道路不是欧拉道路,最好的方法是通过加边使其成为欧拉道路。 3、若该图连通,则度数为奇数的点的个数只会是偶数个( 阅读全文
posted @ 2017-01-18 21:16 Somnuspoppy 阅读(283) 评论(0) 推荐(0)
摘要:题意:从(1,1)走到(m,n),最多能连续穿越k个障碍,求最短路。 分析:obstacle队列记录当前点所穿越的障碍数,如果小于k可继续穿越障碍,否则不能,bfs即可。 阅读全文
posted @ 2017-01-13 11:19 Somnuspoppy 阅读(236) 评论(0) 推荐(0)
摘要:题意:将n个单词排成一个序列,保证相邻单词相邻处字母相同。 分析:每个单词看做一条有向边,字母为点,并查集看图是否连通,因为是有向图,所以最多只能有两个点入度不等于出度,且这两个点一个入度比出度大1,一个出度比入度大1 并查集,单词的首字母是尾字母的祖先。 阅读全文
posted @ 2017-01-11 23:15 Somnuspoppy 阅读(186) 评论(0) 推荐(0)
摘要:题意:迷宫从起点走到终点,进入某点的朝向不同,可以出去的方向也不同,输出最短路。 分析:因为朝向决定接下来在该点可以往哪里走,所以每个点需要有三个信息:x,y,d(坐标和进入该点的朝向),所以将起点的下一个点当做初始状态 注意理解题意:进入交叉点的朝向与从哪个方向进交叉点正好相反 阅读全文
posted @ 2017-01-11 19:16 Somnuspoppy 阅读(224) 评论(0) 推荐(0)
摘要:题意:给定优先关系进行拓扑排序。 分析:将入度为0的点加入优先队列,并将与之相连的点入度减1,若又有度数为0的点,继续加入优先队列,依次类推。 阅读全文
posted @ 2017-01-11 19:11 Somnuspoppy 阅读(168) 评论(0) 推荐(0)
摘要:题意:给定一个图像,字典序输出里面对应的象形文字。 分析:把由十六进制构成的图转换成二进制的图,就能很容易理解题意。 1、在最外圈加一圈0,便于使所有象形文字外的0都是连通的 2、将所有连通的0和1都标号(dfs) 3、再查象形文字里的洞的个数,把所有1附近的不是外圈的0都set一下就好了。 一组完 阅读全文
posted @ 2017-01-11 10:22 Somnuspoppy 阅读(188) 评论(0) 推荐(0)
摘要:题意:求连通块个数。 分析:dfs。 阅读全文
posted @ 2017-01-09 16:57 Somnuspoppy 阅读(171) 评论(0) 推荐(0)
摘要:题意:在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。对于给定的N,求出有多少种合法的放置方法。 分析: 1、数组,表示坐标范围的那一维至少要开到2N,原因是,副对角线通过相加判断是否在同一对角线,横纵坐标的范围会 阅读全文
posted @ 2016-11-08 16:14 Somnuspoppy 阅读(170) 评论(0) 推荐(0)
摘要:题意:给定一个无向图,n个顶点(1 <= n < 1000),m条带权边(1 <= m < 1000000),权值为d(1 <= d < 100),现给定 s个起始点和t个终点(1 <= s, t < 10),求任意一个起点到任意一个终点的最短路程。 阅读全文
posted @ 2016-10-08 15:41 Somnuspoppy 阅读(126) 评论(0) 推荐(0)
摘要:题意:两人相互打电话(直接或间接),则在一个电话圈。即a给b打电话,b给c打电话,则a给c间接打电话。 注意:1、注意标记。2、注意输出格式。 阅读全文
posted @ 2016-06-17 08:26 Somnuspoppy 阅读(183) 评论(0) 推荐(0)
摘要:题意:1、空串合法。2、若A和B合法,则AB合法。3、若A合法,则(A)和[A]合法。 思路:遍历串,遇到(或[,则压入队列,若遇到),判断:若栈空,则不合法;若栈顶元素不是(,也不合法。]同理。因为判断的是栈顶元素,所以能成对的左括号都可及时弹出。 注意:1、用gets读,因空串合法。2、遍历后, 阅读全文
posted @ 2016-06-17 07:58 Somnuspoppy 阅读(162) 评论(0) 推荐(0)
摘要:题意:8*8国际象棋棋盘,求马从起点到终点的最少步数。 编写时犯的错误:1、结构体内没构造。2、bfs函数里返回条件误写成起点。3、主函数里取行标时未注意书中的图。 阅读全文
posted @ 2016-06-16 00:39 Somnuspoppy 阅读(234) 评论(0) 推荐(0)