上一页 1 ··· 9 10 11 12 13 14 15 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2992题目大意:有一家物流公司要送货炒年糕起点(1)送到终点(n),途中有n个城市其中只有h家客栈是免费休息的,途中有m条路通向不同的城市,开车的司机每天最多开10个小时的车程,问你起点送货到终点最少需要住几家客栈(规定只能住自家免费客栈)。 如果答案不存在输出-1。解题思路: 司机从起点或者休息的客栈出发,落脚点必是下一家休息的客栈或者终点。所以对每家客栈(包括起点)spfa一次,找出客栈间最小车程小于十小时的,如果两件客栈间车程小于10小时则令他们的行走天数g[u][v]为1。 开始把终点也放. 阅读全文
posted @ 2012-12-14 22:17 Mr. Ant 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3594题目大意:给你一个图,让你判断他是不是仙人掌图。仙人掌图的条件是:1、是强连通图。2、每条边在仙人掌图中只属于一个强连通分量。仙人掌图介绍 --> http://files.cnblogs.com/ambition/cactus_solution.pdf解题思路:1、首先得先熟练掌握塔尖tarjan算法的应用。2、必须了解仙人掌图的三个性质:(1).仙人掌dfs图中不能有横向边,简单的理解为每个点只能出现在一个强联通分量中。(2).low[v]<dfn[u],其中u为v的父节点(3 阅读全文
posted @ 2012-12-13 23:46 Mr. Ant 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=35381005题目大意:告诉你f[1]=1, f[2]=1, f[n]=(A*f[n-1]+B*f[n-2])%7;然后输入A,B,n,让你求f[n]。解题思路:解法1:n比较大,给你这样递推式子一般不可能让你全部求出来,一般是有规律可寻的。只要在递推的过程中发现f[n-1]==f[1],f[n]==f[2],停止递推。把它多少个数循环一次记录下来,然后只需要用 阅读全文
posted @ 2012-12-10 12:53 Mr. Ant 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=28547题目大意: 给你两个整数n,k,让k不停平方,每次平方完取出前n位数,让你找到最大的前n位数。解题思路: 自己列几项就可以看出一定是一个循环。当发现有重复的出现时循环就结束。 本题解法好多。解法1,用sstream流和set函数,4494ms。View Code 1 #include <iostream> 2 #include <cstdio> 3 #include <set> 4 #include <cs 阅读全文
posted @ 2012-12-06 15:19 Mr. Ant 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.fzu.edu.cn/problem.php?pid=2015题目链接 :http://acm.fzu.edu.cn/problem.php?pid=2020解题思路:2015可以利用公式C(n)(r)=C(n-1)(r)+C(n-1)(r-1) 打表。剩下的问题就转换成了如何列出2020 两个大数相除再取模(比如(a/b)%mod)可以转换成 a*Inv(b,mod),相除取模可以转换成分子乘分母对模数的逆元。如果题目要你求多个组合数的话,那么也可以打表求出前maxn项 f[i]%mod =(1*2*3*……*i)%mod;两个输出的时候都要注意判断答案是不是 阅读全文
posted @ 2012-12-04 00:36 Mr. Ant 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586题目大意:有一棵n个节点n-1条边的树。然后给你两个点u,v,让你求u到v的距离。解题思路: m询问次数比较小,算一下时间复杂度。用邻接表+bfs完全可以过。 会的就不写了,这里我用邻接表+dfs+LCA。做的最近公共祖先第一题。可做模板。 感谢袁神!!! 1 #pragma comment(linker, "/STACK:1024000000,1024000000") /// hdu可以用这个操作防止栈溢出,强大~ 2 #include <iostream> 阅读全文
posted @ 2012-12-04 00:11 Mr. Ant 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257题目链接:1257解题思路: 一开始一直纠结在求最小下降的次数(从大减少到最小的的为一次)。 想了很久才恍然大悟,这题可以转换成求最长非降子序列。贪心思想。 1 http://acm.hdu.edu.cn/showproblem.php?pid=1257#include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include <algorithm> 5 #include <c 阅读全文
posted @ 2012-11-30 18:34 Mr. Ant 阅读(425) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1753题目大意: 给你两个不超过400位的带小数的整数,求出透明的和,要求小数后面的后缀0不能输出。解题思路:题目很简单,思路也比较清晰。不难,但就是要注意的地方很多。 小数点后面的位数可以直接相加,小数点前面的按末尾相加(和小数点后相加不同)。1.注意小数点的进位,如果0位(大于10)还要继续进位,大于10则取余后将tmp2记为1,不大于10则tmp2记为0,小数点前的第一位加tmp2。我就是先进完位再加tmp2错了几次。2.输出的时候判断.要不要输出。测试样例在代码最后,过了这个基本就能过吧。。 阅读全文
posted @ 2012-11-27 18:19 Mr. Ant 阅读(1136) 评论(1) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3242题目大意:给你两个集合,A,B,让你实现操作A+B,A-B(集合内能存相同的)。解题思路:开始脑抽了,我居然用遍历进行判断一个一个去标记去判断,完全的胡搞,各种测试各种对,wrong answer到死,下次再来检查。过不了,果断换一种写法。用vector去存储相加删除,代码简洁清晰,汗颜,开始怎么没想到呢。AC代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #includ 阅读全文
posted @ 2012-11-26 17:53 Mr. Ant 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4334题目大意:输入5行,每行有n个数字,让你从这5行中每行抽取一个数让这5个数的和我0。如果存在输出Yes,否则输出No解题思路:用O(n^2)的时间求出前两行所有sum的值存入hash表中,注意存的时候存它的相反数,下面再解释。然后再用O(n^3)的时间枚举后三行所有的sum值,现在只需要判断hash表中是否有它对应的数,因为上面我们存的是相反数,这就是我们上面为什么存相反数的原因了。如果找到了,直接跳出循环。还有一点要注意的是,hash表不能赋初值,hash表最好开到它所有数据十倍左右,藐视我 阅读全文
posted @ 2012-11-24 21:19 Mr. Ant 阅读(413) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 下一页