摘要: 题目:http://poj.org/problem?id=1258题目大意:多组测试用例,找出连接所有农场的最短路径。算法:最小生成树 + 并查集。提交情况:1次WA,1次RE,1次AC。总结:没注意到多组用例;边集一定要开够。思路:建立无向图,用上三角矩阵表示,并查集 + Kruskal建最小生成树,记录总长度。AC code:View Code 1 #include <stdio.h> 2 3 #include <stdlib.h> 4 5 #include <string.h> 6 7 #include <algorithm> 8 9 us 阅读全文
posted @ 2011-07-20 16:25 cloehui 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=2485题目大意:输入各城镇之间的距离,求最小生成树中最长的边。算法:最小生成树。提交情况:3次RE,1次AC总结:边集一定要开大。思路:建立无向图,用上三角矩阵表示,并查集 + Kruskal建最小生成树,记录树中最长边。AC code:View Code 1 #include <stdio.h> 2 3 #include <stdlib.h> 4 5 #include <string.h> 6 7 #include <algorithm> 8 9 using namespace std 阅读全文
posted @ 2011-07-20 16:23 cloehui 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=3853题目大意:二维地图,分成r*c的方格,从左上角走到右下角,在每个格内有一定的概率停在原地,右移一格,下移一格,三种情况概率和为1。每次移动(包括停在原地)耗费两点魔法值。求从起点到终点所耗魔法值的期望。算法:dp思路:期望公式 E = x1 * p1 + x2 *p2 + …… +xn * pn 假设每格内停在原地概率为map[i][j].x,右移一格概率为map[i][j].y,下移一格概率为map[i][j].z;exp[i][j] 为从起点走到ij格所耗魔法值的期望。 同时可以得知exp[r 阅读全文
posted @ 2011-07-20 15:58 cloehui 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1201一道水题,简单的判断闰年就好了。思路 : 17年的全年天数,加上第1年生日后的天数和第18年生日前的天数,就是到达18岁所需天数。如果18岁那年是平年,而且是2月29日的生日,就没有18岁生日,输出-1。AC code:View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 int year, month, day; 4 int year1, year18, day1, day2, days; 5 int S_Day(i 阅读全文
posted @ 2011-07-20 13:14 cloehui 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1241题目大意:简单的dfs~ 搜索地图,每找到一个油田,就搜索八个方向,将连着的油田标记为同一个。算法:dfsAC code:View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define MAXN (100 + 10) 5 char map[MAXN][MAXN]; 6 int oil; 7 int m, n; 8 9 int dx[8] = {-1,-1,- 阅读全文
posted @ 2011-07-20 13:12 cloehui 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2047开心~~第一次完全自己做出来的递推~~虽然想的过程有些纠结,但是规律毕竟是找出来了。思路:f[i]表示长度为i时的方案数, o[i]表示长度为i时所有方案中末位字母是o的个数.1)当长度n = 1时,有三种涂法 : E、 O、 F. f[1] = 1.其中O的个数为1, o[1] = 1.2)当长度n = 2时,E、 F分别又对应出3种情况(E、O、F), O对应出两种情况(E、F),因为不能有OO出现.末位O的个数o[2] = 2.f[2] = 3 * f[1] - 1 = 3 * f[1] - 阅读全文
posted @ 2011-07-20 13:10 cloehui 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=2046知道应该用递归递推来做,但是一直找不到规律……拖了好久,终于决定今天做完。苦思无果搜题解,发现代码只有几行…… 递推递归果然神奇啊!!!思路:f(1)=1,f(2)=2,f(3)=5,当有n个方格的时候,有两种铺法: 1)先铺好n-1个格,有f(n-1)个方法,再铺第n层的时候只有一种方法,所以总方法是1*f(n-1); 2)先铺好n-2格,有f(n-2)个方法,再铺后面两层的时候只能两个都横着铺(否则与第一种情况重复),所以也只有一种情况,总方法数是1*f(n-2)再没有其他情况了。 推出f(n 阅读全文
posted @ 2011-07-20 13:07 cloehui 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1089 一共八道题目,题目都不难, 就是为了练习输入输出,题目之间的联系也很多,稍微改动一点点就可以了。题目都看的懂,我就不多说了哈…… 贴代码…… 注意随后一题要求 每个输出“之间”有空行,最后一行的后面没有空行AC code:View Code 1 // A + B (1) 2 3 4 5 #include <stdio.h> 6 #include <stdlib.h> 7 int main () { 8 int a, b; 9 while (~scanf ("%d 阅读全文
posted @ 2011-07-20 11:18 cloehui 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 题目:http://poj.org/problem?id=1664自己想了半天,什么排列组合之类的,后来去搜题解,才知道是用递归…… 强大啊……个人感觉递归好神奇啊,反正就是一次一次调用然后结果就出来了,不用去想它具体是怎么实现的。 这题的思想是找递归关系,我们不妨令f(m,n)表示m个苹果放到n个盘子里有多少种放法,下面对不同的情况给予讨论:(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘子里,结果都算一个。(3):当m<n时,因为此时最多只能放到m个盘子中去( 阅读全文
posted @ 2011-07-20 11:10 cloehui 阅读(779) 评论(0) 推荐(1) 编辑
摘要: 题目:http://poj.org/problem?id=1163动态规划入门题~~ 在很长一段时间内,我的dp水平都停留在只会写数塔……选择一条路径从底加到顶,对每一个点num[i][j]来说,都可以从num[i+1][j] 和 num[i+1][j+1]中选一个加上来。如果每一次都加其中大的,并更新当前值,那么一直加到顶部,那个数必然是最大的。我的理解就是,每步都取最优解,所以最后的解也是最优的。AC code: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MAX 100 + 10 4 int main 阅读全文
posted @ 2011-07-20 11:03 cloehui 阅读(286) 评论(0) 推荐(0) 编辑