
暴力-回溯-简单
文章平均质量分 68
miss_minor
坚持,请你坚持
展开
-
uva208Firetruck(并查集 + DFS)
题目:Firetruck题目大意:给出终点,起点的编码永远都是1,问有多少走法可以从起点到终点,并输出路径。解题思路:这题就是用dfs,但是如果不进行剪枝的话,21个城市这样dfs的话会超时,所以这里就用并查集来判断起点和终点是否相通,这里的判断方法是给两个数组用来代表每个数组的父节点,一个是用来判断是否与起点相同,另一个是用来判断与终点是否相通,相通即在同一个集合中。原创 2014-04-13 19:43:49 · 1893 阅读 · 6 评论 -
uva 10012 - How Big Is It?(排列 + 回溯)
题目:uva 10012 - How Big Is It?题目大意:给出n个圆的半径,要求圆要和地面相切,求这样的圆怎么组合能够使得盒子的宽度最短。解题思路:这题里面情况会有两个大圆相切,然后中间夹多个小圆,这样这些小圆的距离就不用算入盒子的宽度了,这里先用排列组合的方式将这几个圆全部的组合方式排列出来,这样这些圆的前后关系就定了,但是现在就需要判断这样的情况下的盒子的宽度原创 2014-04-24 15:59:26 · 1079 阅读 · 0 评论 -
167 - The Sultan's Successors(八皇后问题(回溯))
题目167 - The Sultan's Successors题目大意:就是八皇后的问题,只是加上求八个皇后所对应的位置对应的值相加的最大值。阶梯思路:八皇后问题转换成全排列问题,C【i】 = j 表示第i行 的皇后在第j列,这样排列的话每行的皇后不会互相冲突,就需要判断每列的皇后和两条对角线是否有冲突的皇后,所以这需要开一个数组vis【3】【MAXN】, 每次判断vis【原创 2014-04-04 18:44:40 · 1188 阅读 · 0 评论 -
216 - Getting in Line(dfs)
题目:216 - Getting in Line题目大意:给出一系列的点的坐标,怎样把这些点串起来达到长度之和最小。解题思路:这题就是dfs,然后就是记录哪个点串哪个点,这两个点长度多少的问题。#include #include #include const int N = 10;int n, vis[N], dis[N], tem[N];float min原创 2014-04-11 14:12:26 · 866 阅读 · 0 评论 -
301 - Transportation(dfs)
题目:301 - Transportation题目大意:给出车的限载人数,n个b城市,和m张订单,问如何选择订单可以使得盈利最大。 盈利 = 各个订单的金额之和 每个订单金额 = 路径 * 人数 ,每个图都有A城市。解题思路:这题用dfs,每张订单可以选也可以不选,选择的话又的分能不能选,要在限定的数目内才可以接受订单。还有订单要排序,因为车始终是从A到B,这样的话当然是起点越小的原创 2014-04-11 09:11:15 · 765 阅读 · 0 评论 -
10344 - 23 out of 5
题目:10344 - 23 out of 5题目大意:给出五个数,问能否通过上述的公式就是包含加减乘来产生23.解题思路:生成五个数所有的排列,然后再dfs()加减乘,判断是否能达到23,可以直接退出,不能的话就继续dfs。注意:stl里面给的next_permutation()是需要数组s本身有序这个前提的,否则生成的排序会不全。#include#inclu原创 2014-04-09 10:48:06 · 769 阅读 · 0 评论 -
331 - Mapping the Swaps(回溯+ dfs)
题目:331 - Mapping the Swaps题目大意:给出一个序列,要求只能相邻的进行交换,求交换次数最少的不同的交换方式有多少种。解题思路:每次都可以从头选两个需要交换的位置进行交换,(只有前一个的值大于后一个的值才需要交换),选的第一个交换的数的位置不一样,所对应的map也是不一样的。然后这里有可以剪枝的地方:如果在交换的过程中交换的次数已经大于之前的最小的交换次数就可原创 2014-04-06 13:27:23 · 843 阅读 · 0 评论 -
140 - Bandwidth(排列(带宽问题))
题目:140 - Bandwidth题目大意:给出一些点,点和点之间是否相连,求这些点怎么排列可以使的所有点形成的图的带宽最小。如果有多种情况按照字典序输出。图的带宽指的是点的带宽的最大值,点的带宽指的是,所有和这个点联通的其他的点到这个点的距离的最大值。解题思路:转换成全排列问题。将这里点和点的联通关系存放在邻接表中,注意这里的边是无向的就说明点和点之间的连通关系是双向的原创 2014-04-06 09:05:44 · 1228 阅读 · 0 评论 -
165 - Stamps(dfs)
题目;165 - Stamps题目大意:给出h,h代表每份文档最多可以贴的邮票数目,k代表供选择的邮票种类。求由这两个条件下可以得到邮票面值最大值。这个最大值是指连续的最大值,就是如果7是最大值,就说明1-7连续都是可以产生的,而八不可以。解题思路:这题就是搜索,但是遇到了枚举邮票的面值上限的问题,一开始只考虑了到了最后一张邮票,结果就超时了,考虑的不够周到。后来看了别人的题解原创 2014-04-06 18:27:35 · 792 阅读 · 0 评论 -
639 - Don't Get Rooked(搜索回溯)
题目:639 - Don't Get Rooked题目大意:在给定的棋盘中,看最多可以放多少个棋子。放棋子规则:同一行同一列不可以有两个以上的棋子,除非中间有墙隔着。阶梯思路:让每个棋子从不同的起点开始,然后往后遍历,例如如果是按先行再列的顺序遍历的话,如果当前已经便利完x,y;那么下一个遍历开始的位置就是x,y+ 1.注意判断完前面的位置之后,只需要从这个位置的后面开始判原创 2014-04-04 09:59:14 · 1188 阅读 · 0 评论 -
539 - The Settlers of Catan
题目:539 - The Settlers of Catan题目大意:给出一系列的点和相应的边,求最长的路径,路径是由相连的边构成的,每个边最多被用一次。阶梯思路:回溯,每次都从一个点开始dfs,如果发现走过相同的边,就把长度记录下来,然后把状态恢复,走别的路。最后去这些路径中最长的。注意:每个点都有可能成为最长路径的起点。#include#include原创 2014-04-03 17:52:38 · 1091 阅读 · 0 评论 -
193 - Graph Coloring(DFS)
题目:193 - Graph Coloring题目大意:给出一个图,图里面有点和边,要求相邻的点不可以都是黑色的,问怎样上色黑色的点最多的,给出字典序最大的那种组合情况。#include #include const int N = 105;int n, m, s[N][N], ans[N], cas, count, vis[N];bool judge (int x, in原创 2014-05-02 12:17:29 · 876 阅读 · 0 评论 -
10001 - Garden of Eden(dfs)
题目:10001 - Garden of Eden题目大意:题目给出元胞自动机的种类,和要处理的元胞长度,和元胞字符串,问这个元胞是否可以由其他的元胞转换而来,是的话输出REACHABLE,否则输出GARDEN OF EDEN。这题最让人困惑的就是题意了,去搜别人的解题报告看题意结果还是看不懂,最后只能结合代码来理解题意。所以以下是我结合代码理解的题意,可能和题目原本的意思有些原创 2014-04-12 10:44:35 · 1060 阅读 · 0 评论