ACM
文章平均质量分 67
ze帆_fan
这个作者很懒,什么都没留下…
展开
-
HDU1162 Eddy's picture
题意大致是: 给出一组坐标点,每两个坐标点之间都可以连线,求最短的连线将所有点串在一起。 用普利姆算法AC···· 模板题啊!···· -.- #include #include using namespace std; #define MAXN 110 #define INF 0x3fffff struct Point { double x; double y; }point原创 2012-08-09 15:08:47 · 734 阅读 · 0 评论 -
HDU1102 Constructing Roads
题意大致是: 有N多村子,村庄之间的距离已经给出。求联通各个村庄的最短路径。 有一个附加条件,期中一些村庄已经有公路村庄,即已经连通。 非常简单, 只要把已经连通的村庄之间的距离设置为0,然后用Prim算法套用模板直接计算即可。 #include #include using namespace std; #define MAXN 110 #define INF 0x3f原创 2012-08-09 15:53:40 · 400 阅读 · 0 评论 -
HDU2602 Bone Collector
题意大致是: 有个人在爱好是收集骨头,然后背包容量有限,每块骨头有特定的重量和价值。求在有限制的背包容量下装下的骨头的最大价值。 注意,输入是先价值,后重量,别搞混了。 解题思路是: 设定一个Dp数组,初始全为0,用来存放”现阶段“最大的价值。 #include using namespace std; #define MAXN 1100 int DpValue[MAXN];原创 2012-08-10 12:20:16 · 390 阅读 · 0 评论 -
HDU1874 畅通工程续
求单源最短路径,简单的用Dijkstra算法水过。 不过隐藏着一个小陷阱,就是可能两个点之间有多条路,这时候取最小即可。#include using namespace std; #define MAXN 220 #define INF 0x3ffffff int map[MAXN][MAXN]; int dis[MAXN]; bool visited[MAXN]; void init(i原创 2012-08-10 13:38:46 · 463 阅读 · 0 评论 -
HDU2553 N皇后问题
题意:有名的N皇后问题。输入N,求符合要求的N皇后排法有几个。 思路:看注释 #include #include using namespace std; #define MAXN 10 + 3 int list[MAXN]; int counts[MAXN]; int count = 0; int n; void search(int m) { //m表示层数,一开始从0开始s原创 2012-08-29 09:21:51 · 1054 阅读 · 0 评论 -
HDU1465 错排经典题目
题问:给N个人信件全部转错信封的情况的总数; 这是经典的错排题目,百度一下就知道得出递推公司 f(n) = (n-1) *( f(n-1) + f(n-2)); 这里详解一下这条公式是怎么推出来的! 首先,f(n)代表n封信件全部装错的情况数。 假设有100个信件需要投递,。那么我把信件分成两部分:99封 和 1封; 我把这99封信给其中一个人A,让他交给其余的人(其中包裹他原创 2012-08-23 00:04:15 · 629 阅读 · 0 评论 -
HDU1142 A Walk Through the Forest
题意:给你一个图,求从点1到点2有多少种不同的走法,并且每种走法都必须往点2更近的方向走。(也就是说下一个点必须比当前点更接近点2) 思路:因为必须往点2更近的方向走,所以第一步必须先求出点2到每一个点的最短路径。用迪杰斯特拉算法。 设定一个DP数组,DP[i] 表示第i点到点2有多少种符合条件的走法。然后用递归的方法从1点求出到2点的符合条件的走法。具体思想看代码。原创 2012-08-27 10:23:33 · 504 阅读 · 0 评论 -
HDU1198 Farm Irrigation
题意:给如一个地图,每一个方块上都有一条河流,如果两个方块间的河流连接在一起,那他们就是同一条河流。每条河流必须有一个源点。这样才能保证每条河流所在的方块上的农田能被灌溉到。 简化一下提议,就是求有多少条河流。 思路:从给出的11块方块种类,可以计算两块农田一上下或者左右连在一起是否能构成一条河流,如果能,就用并查集连在一起,最后计算有多少个节点就OK了。 思路简单,代码不做原创 2012-08-27 10:31:05 · 628 阅读 · 0 评论 -
HDU2546 饭卡
问:给你N元,每一件食品可以购买一次,如果卡上多余5元即使透支也可以刷卡。少于5元不能使用,求最多能让卡的余额为多少? 思路:背包问题,用DP,具体细节看注释! #include #include using namespace std; #define MAXN 1000 + 10 int value[MAXN]; //value[i] 表示给你 i 元,你最多能花掉多少钱。原创 2012-08-25 21:28:42 · 960 阅读 · 0 评论