摘要: 最短路 OR 搜索这题大多数是归为图论题,求最短路径,看了一下题目,确实是这样的意思,但是我却很难想到怎么最短路。后来觉得搜索更形象易懂所以写了一个dfs,但是wa,然后看了一下解题报告才发现有个地方理解错题意了。根据题意做了小修改就过了题意:其实就是找一条最短路径,但是路径中任意两个点的等价差不能超过限制值(我一开始的理解是两个直接相连的点的等级差不能超过限制值)/*建图:一个物品就是一个点,一个物品能容另一种物品来换,那么就是两个物品间可能相连,为什么是可能,因为还要两个物品的等级满足条件。因为物品数上限为100,用邻接矩阵来建图方便。再注意一点,这是个有向图,要得到i物品可以用j物品来换 阅读全文
posted @ 2013-02-19 18:45 Titanium 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 最短路变形题意:输入n和m表示图的顶点数和边数然后下面m行给出每条边的信息(无向图)。起点是办公室编号1,终点时家编号2。从1到2,问满足要求的路径条数。要求就是,该条路径经过A点到B点的话,那么经过B点到家的最短路径值要小于A点到家的最短路径值,关于这句话是什么意思,看下面的注释还好是1A了这题,否则的话感觉要调试很久//先以家为源点运行一次dij得到家到每个点的最短路(也就是每个点到家的最短路)//那么从办公室到家的最短路(一条或多条)一定符合题目的要求,因为最短路本身有最优子结构的性质//还有一些路径,不是办公室到家的最短路,但是它符合题目的要求//例如办公室为O,家为H,从O到H的最短 阅读全文
posted @ 2013-02-19 16:14 Titanium 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 递推题意:看题目中的列子就可以知道 ,当n为5时,可行的子集有{1,3,5},{2,4},{2,5},{1,4}1.子集中任意两个元素的差x要2<=x<=3。2.子集要尽可能的长,好像1,3,5,不能是1,3,因为还能加上5然后就是一个很简单的递推,按位递推即可,dp[i]表示用前i个数字能产生多少个子集(并且该子集中包含了第i个元素),那么对于dp[i]来说,决定它的是dp[i-2]和dp[i-3],有第i个元素的子集必定有第i-2个元素或第i-3个元素至于用递推或者记忆化搜索来写都是没问题的#include <cstdio>#include <cstring& 阅读全文
posted @ 2013-02-19 11:21 Titanium 阅读(401) 评论(1) 推荐(0) 编辑