
搜索
文章平均质量分 87
Noooooorth
能够放弃的东西从来都不叫梦想
展开
-
SCU 4526 最短路(dijkstra+枚举+BFS)
题目链接:点击打开链接 题目大意:给定n个点,m条有向边,求互不重叠的从起点到终点的最短路条数,点可以重复使用。 解题思路: 首先我们要找出所有的最短路使用的边。可以想到:对于一条边,如果从起点到它的一端的最短距离加上终点到它另一端的最短距离再加上边的长度等于起点到终点的最短距离,那么这条边必定是某一条最短路上的一条边。所以,使用两次dij求对于起点和终点的单源最短路,然后枚举边,就可以判断原创 2016-07-26 01:13:19 · 548 阅读 · 0 评论 -
POJ 1315 Don't Get Rooked(DFS)
和N皇后问题类似,这道题让求出棋盘在被墙分隔的情况下的最多能放的棋子的个数,使分隔后的每行每列仅有一个棋子。方法是从前到后dfs,同时用4个循环判断位置是否合法。原创 2015-07-22 00:21:04 · 1691 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone(DFS+剪枝)
题目大意是不能回头,问狗是否能在规定的时刻到达门处。不难想到用dfs,但是普通的dfs会超时,所以就要剪枝。这一题最重要的一个剪枝就是判断曼哈顿距离与规定时刻的奇偶性是否相同,如果不同则一定不能在规定时刻到达。因为狗如果能在规定时刻之前到达大门处一定需要先离开离开再进入最短路,所以差值一定是偶数。另外还要注意题目输入的t之后可能会多一个空格,用getchar()的要注意。原创 2015-07-23 00:51:18 · 1521 阅读 · 0 评论 -
POJ 2965 The Pilots Brothers' refrigerator(DFS)
与POJ1753类似,把矩阵的状态转换成一个16位的二进制数,'+'对应位为1,反之为0。到达终点的标志就是矩阵的二进制数为0。对4*4矩阵的16个点进行dfs,分为翻转和不翻转两种选择,最终输出路径。原创 2015-07-23 00:57:40 · 1592 阅读 · 0 评论 -
POJ 1088 滑雪(记忆化搜索+DFS)
100*100的矩阵,如果裸dfs很可能超时,所以可以用记忆化搜索的方式,dp[i][j]表示当前到达[i,j]的最长路径,在dfs的同时,更新dp[i][j]。思路总体来说很简单。原创 2015-07-26 23:19:18 · 1846 阅读 · 0 评论 -
HDU 2489 Minimal Ratio Tree(prim+DFS)
首先n的范围是[2,15],所以可以用dfs搜索使得Ratio最小的点。那么思路基本清晰:首先dfs,搜索所有的点选与不选所得到的最大的Ratio,如果当前状态下得到的Ratio比之前得到的Ratio要小,那么把当前状态的vis数组更新的答案ans数组中。最后从1到n扫描ans数组即可保证答案是升序。原创 2015-08-06 16:49:13 · 1650 阅读 · 0 评论 -
HDU 1796 How many integers can you find(容斥原理+二进制/DFS)
求n以内能够被所给的集合中的数整除的数的个数。原创 2015-08-17 23:58:38 · 2159 阅读 · 0 评论 -
POJ 1077 Eight & HDU 1043 Eight(康托展开+BFS)
题目链接:1077 -- Eight Problem - 1043 两个题目几乎完全一致。不同的是,HDU的八数码这道题需要一次bfs,起点为123456789X,遍历完所有状态,同时用pre数组记录上一个状态,然后每次输入只需要一个while进行O(1)的查询。 方法没有什么特殊的,我用的是普通的bfs。这道题和其他的搜索题目不一样的一点是,9个格子,太大没有办法标记。这时可以利用康托展开。原创 2016-07-13 01:04:35 · 402 阅读 · 0 评论 -
POJ 1753 Flip Game(BFS)
一个4*4的棋盘,每次选一个位置,将该位置及其上下左右共5个位置的棋子翻转,问最少翻转多少次可以使16个棋子颜色一样。 由于棋盘已经固定为4*4的大小,所以可以用一个二进制数来表示当前整个棋盘的状态。原创 2015-07-21 00:30:33 · 2171 阅读 · 0 评论 -
Gym 100712G Heavy Coins(DFS)
题目大意是给你N个硬币,从这N个硬币中拿出若干个硬币使总和大于S,同时从你所选的这堆硬币拿走任何一个都会使总和小于S,也就是说取出若干个硬币且取出的这些硬币没有一个是多余的,求最多能拿出多少个硬币。 题目的N只有10,所以基本上怎么做都行,可以枚举所有的情况,最多也只有1000+种情况,也可以dfs搜索最大个数。但要注意dfs要从大到小,以防止出现拿走一个硬币时总和仍旧大于S的情况。原创 2015-07-21 00:27:01 · 874 阅读 · 0 评论 -
HDU 5723 Abandoned country(DFS+kruskal)
题目链接:点击打开链接 题目大意:给出n个点和m条边,每条边的权值都不相同,求使得n个点连通最少需要的边的权值,以及随机选2个点作为起点和终点的路径长度的期望(题面说是最小权值和最小期望,但是m条边权值各不相同,所以每个权值对应一个期望,求出最小生成树的时候,期望也一定是最小的) n的规模是1e5,所以求最小生成树使用的是O(nlogn)的kruskal。问题是怎么求期望。 首先,每两个点被原创 2016-07-20 02:07:02 · 482 阅读 · 0 评论 -
SCU 4531 Cruel War II(DFS)
题目链接:点击打开链接 题目大意:选出若干个点,每个点会覆盖连接该点的边,使用不大于10切最小的点覆盖整张图。 解题思路: 题目是一般图最小点覆盖问题,直接搞的话。。。我不会。但是这道题要求了如果点数大于10,就输出字符串。所以就可以进行暴力DFS,对于某条没有点覆盖的边,选中左边或选中右边,进行下一次DFS,成熟最多也只有10层,也就是2^10。所以直接暴力DFS枚举点。 #in原创 2016-07-26 01:27:45 · 609 阅读 · 0 评论 -
HDU 5802 Windows 10(贪心+DFS)
题目链接:点击打开链接 题目描述:把音量从p变到q,每一秒可以按“上”、“下”按钮或者不按。按“上”按钮每次加1。按“下”按钮:(1)如果上一步按的是“上”或者没有按按钮,则减1;(2)如果上一步按的是“下”按钮同时上一步减少了x,那么这一秒减少2*x。同时音量不能小于0。 解题思路:如果p #include #include #include #include #inclu原创 2016-08-05 23:21:23 · 506 阅读 · 0 评论