随笔分类 -  ACM-搜索

摘要:题意: 给一个DAG,要求s到t的第K短路,很经典的问题。 分析: 我们可以看到k<=1000,这个值不是很大,我可以想到直接bfs走遍所有情况,最多也就有1000中情况,但是1000个点显然会M。 既然是要求k短路,也就是说最终计算出来的到达t的花费必然是递增的,也就是说我们在搜索的时候肯定要用到 阅读全文
posted @ 2017-04-04 16:21 tak_fate 阅读(249) 评论(0) 推荐(0) 编辑
摘要:题意: 一棵树,每个节点有一个权值t,把它分成三部分,每部分要求权值和相等。 分析: 先可以先算出总大小sum。 接着%3看能不能分,不能-1,能继续。 然后递归算出每个子树的权值和。 一开始想到直接找出两个sum/3就行了,后来发现还会可能有两个分点输出祖辈关系。 想到半天,感觉很容易dfs写,, 阅读全文
posted @ 2017-02-21 13:41 tak_fate 阅读(466) 评论(0) 推荐(1) 编辑
摘要:题意:有一个4*4的矩阵,每次可以让某一行向左或向右滚动一次,或者让某一列向上或向下滚动一次,问在5次之内要几次能使矩阵达到每行的数字都相同或者每列的数字都相同,如果超过5次,就输出-1。 分析:第一次学A*和IDA*,看这题是中文题就先写了这题,一开始是用A*写的,然后写的很蛋疼。之后发现也就5次 阅读全文
posted @ 2016-11-18 09:14 tak_fate 阅读(298) 评论(0) 推荐(0) 编辑
摘要:原题链接: http://poj.org/problem?id=2718 题意: 给你几个数字,可以分成两个子集,然后分别按一定顺序排列组成一个数,求出这两只值差的绝对值的最小值。 分析: 反正也是刷着玩,果断先交一波全排列枚举的代码,果断TLE,然后开始想正解。 稍微想想,既然要差最小,肯定是两个 阅读全文
posted @ 2016-08-16 00:46 tak_fate 阅读(1055) 评论(2) 推荐(0) 编辑
摘要:原题链接: 比较麻烦,就不挂,可以上uva live找,也可以用virtual judge挂题。 题意: 输出从1到k的所有路径,不能重复经过 分析: 这题就是简单的深搜回溯,用一个数组记录路径,满足条件时输出。紫书上说需要先判断1到k是否联通,不然会超时。交了一发直接深搜,果然TLE。所以需要先判 阅读全文
posted @ 2016-08-15 17:46 tak_fate 阅读(188) 评论(0) 推荐(0) 编辑
摘要:原题链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=825&page=show_problem&problem=4475 题意: 在m*n的地图上,有障碍物(1)和空地(0),机器人 阅读全文
posted @ 2016-08-09 01:03 tak_fate 阅读(735) 评论(3) 推荐(0) 编辑
摘要:原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1016 感悟: 这题一看就是递归+深搜+回溯,本来的写的代码已经可以输出正确答案,但是大部分判断都是循环,怕过不了,结合其他一些博主的代码,优化了一下。特别是用flag表示是否数组这一招比较佩服,用内存 阅读全文
posted @ 2016-03-14 22:05 tak_fate 阅读(180) 评论(0) 推荐(0) 编辑