ACM刷题录
文章平均质量分 56
非ACM选手,兼职刷题人。本专栏主要是杭电HDU及其他OJ上题目的解题报告,涉及数据结构和算法的讲解。
果冻虾仁
这个作者很懒,什么都没留下…
展开
-
hdu1559,1081最大子矩阵和的两种题型
最大子矩阵是一种典型的dp问题。某种程度上说是最大连续子序列和问题的扩展。这里选取了两个HDU上的最大子矩阵和问题来解读。原创 2014-08-13 15:22:01 · 2259 阅读 · 0 评论 -
hdu1159 LCS模板题
LCS最长公共子序列模板题。。原创 2014-08-06 22:41:36 · 1791 阅读 · 0 评论 -
hdu1243 最长公共子序列(LCS)
这道题基本上是在普通LCS问题上的一点小小的变形,由求LCS的长度,改为求LCS的权值。架构还是不变的。可作为LCS问题的模板题。时间复杂度O(N^2)。注意题目中的字母都是小写字母,也就是只有26种字符。不需要开太大的数组。所以hash就是很好的一种保存权值的方法。另外吐槽一下。子弹序列和恐怖分子序列的长度太坑了,因为题目没有给出长度。我开了个2000个数组,wa了n次。改成2005就AC了。原创 2014-08-06 12:24:24 · 2579 阅读 · 0 评论 -
hdu1087最长递增子序列
简单dp题,LIS。不同之处是这里要求得的不是最长的子序列,而是权重和最长的子序列。其实大同小异。状态数组就是到达每个位置的最大权重。LIS问题常用解法就是两个: 人人为我 我为人人原创 2014-08-03 23:07:24 · 2079 阅读 · 0 评论 -
hdu1257 LIS模板题*
原题地址原创 2014-08-03 19:35:30 · 1630 阅读 · 0 评论 -
hdu2647 逆拓扑,链式前向星。
老板发工资,但是要保证发的工资数满足每个人的期望,比如A期望工资大于B,只需比B多1元钱即可。老板发的最低工资为888元。输出老板最少发的工资总数,若是无法满足大家的期望,则输出-1。原创 2014-07-20 09:53:57 · 1853 阅读 · 0 评论 -
hdu1285 拓扑排序+优先队列
给出几组比赛的胜负情况。判断最后的排名。根据题意这就是一个明显的拓扑排序问题了。注意如果因为可能的排名有多种情况,这时要保证编号小的在前。题目输入的数据可能有重复边拓扑排序首先统计每个结点的入度。将度为0的结点编号放入队列(此题放入优先队列中)中。然后进行循环:取出队头结点,视作边的起点。然后“删除与该点相连的边”,代码就是将这个图中的该边另一个结点(即终点)的入度减一;如果减一以后,终点的入度变为了0,那么将终点的编号入队列。判断队列是否为空,若不空,则回到1原创 2014-07-18 17:03:50 · 2086 阅读 · 0 评论 -
hdu1240/poj2225 BFS广搜的再理解
这同样是一道搜索题,所不同的是要搜索的图是三维的而不是二维的。但这并没什么大的改变,只是增加了两个搜索的方向而已。要注意的地方是,所给出的起点终点的坐标是按照 列,行,层的顺序。与DFS不同,BFS能保证所搜到的路径一定是最短路径,所以我们不需要维护一个多维(此处为3维)数组来记录访问到每一点的最小步数,只需要维护一个多维数组来标记是否走过就可以了。DFS中是要不停回溯来找最短路径的,但是BFS是不需要的。这是BFS本身的性质所决定的,BFS能保证第一次搜索到某一点时所走的路径就是到该点的最短路径。以后原创 2014-07-14 10:06:43 · 1910 阅读 · 0 评论 -
hdu1372 dfs搜索之国际象棋的马
中国象棋和国际象棋应该还是有些渊源的,的确二者的起源不同。中国象棋在战国以前就有了,而国际象棋流行的说法是起源于古印度。二者在千百年的历史长河中,其规则和形态也都是在一直变化的。中国古代很早就和印度有了往来,所以中国象棋在历史上遇到了国际象棋也是极为有可能的。二者相互影响。然后又各自发展,比如两种象棋的棋盘都是8x8的格子,两种棋中马和象都是一样的走法。而在古代国际象棋中的皇后的走法没有如今这么厉害,文献曾记载的皇后走法和中国象棋的士是相同的。同样在中国曾出土的唐代的象棋棋盘竟然是黑白格子相间的,这无疑与现原创 2014-07-05 12:38:11 · 2284 阅读 · 0 评论 -
hdu1181 dfs搜索之变形课
题目中给了很多字符串,但是关心的只是字符串的第一个和最后一个字符。咋看起来,貌似是要建立一个个字符间的“映射”,其实不然,这其实可以转化为一张26*26的有向图。有最多26个结点,原先的字符间映射关系就转化为结点之间有路径。问题就变成了是否能找一条路径从结点b到结点m。原创 2014-07-03 20:27:39 · 1951 阅读 · 1 评论 -
hdu1455 dfs搜索之凑棍子
这道题和poj的拯救少林神棍是一样的题目。要用给出的小棍凑成等长的棍子,求能凑成的棍子的最小长度。直观的包里思路就是枚举所有可能的长度,然后不停的测试小棍组合,先把小棍加入组合,然后不合适就推翻这一根小棍,再测试下一个小棍,直到推翻所有的小棍。在枚举的时候,我们只需从最长的小棍长,枚举到小棍总长的一半就行了。然后如果再不符合的话,那么就说明所有小棍只能组合成一根棍子了。我原先看过关于poj上拯救少林神棍这道题目的详细讲解。一个DFS搜索题,这里DFS共有四种剪枝方案:原创 2014-07-02 23:32:56 · 1884 阅读 · 0 评论 -
hdu2084动态规划入门题----数塔
原题:数塔动态规划入门题目。比较简单。原创 2014-06-11 18:15:25 · 2433 阅读 · 0 评论 -
浙大计算机研究生复试上机考试(2010)——二叉搜索树(hdu3791)
【静态链表解二叉搜索树 】用静态链表(数组)去解这道二叉搜索树的题目。无需使用链表、指针,无需自定义结点类型,操作简单。仅仅是将空间上的二叉搜索树映射到一维数组上。原创 2014-05-19 15:49:21 · 2081 阅读 · 2 评论 -
hdu3336解读KMP算法的next数组
贴代码不是目的,讲解算法才是关键!!。解题的思路是使用了 KMP 算法,然而把并不是完整的KMP算法。只用到了它的next数组的求法。然而这正是KMP算法本身的关键所在。这里关键在于讲解next数组的思想。在漫天飞的网络资料中,next数组的表示方法大致有两种:原创 2014-05-14 09:34:44 · 2987 阅读 · 0 评论 -
hdu1875浅谈prim算法的朴素实现
给你几个(<=100)小岛的坐标,然后你把所有的岛都修上桥连接起来,求最小花费,还有个附加的限制:只有岛之间的距离大于等于10,或小于等于1000时才能修桥。很明显这是一道MST(最小生成树)的题目.最小生成树的常用算法有两个kruskal和prim算法。一言以蔽之,两者的不同之处在于:kruskal----归并边;prim----归并点。我用离散数学来描述一下。设有图G=(V,E),所有的结点集合为V,另有一空集合U。基本思路是: 先随意确定一个起点。 设此点为v,加入集合U中。原创 2014-05-09 20:54:36 · 2200 阅读 · 0 评论 -
hdu1325 Is It A Tree?并查集
hdu1325和另外一道hdu1272.题意基本一致。但是由于数据不同,所以解法也不尽相同。hdu1272可以不使用并查集水过,但这道就必须利用并查集了,用来判断是否是多个树。此外还要判断是否为有环,也就是入度不能大于1.原创 2014-04-24 07:36:26 · 2466 阅读 · 0 评论 -
hdu2054 不要想太多,这就一水题
早该想到这是一道水题,因为这道题在杭电OJ题库的第11页,这一页基本上全是水题。但是看讨论区,大家实在想的太多了,没那么复杂。题目是比较两个数是否相等,大家也完全没有必要想的太多!!!我在wa了之后变去讨论区看了这题该注意的情况,里面好多人讲了好多种要注意的情况,我尝试着都考虑到程序里,结果换来了更多的WA。但是后来里面有人提到了大家都想的得太多了!!!我就试着按他的考虑不多的情况去考虑,结果就AC了。本文顺便介绍一下c++string的substr和find方法原创 2014-04-21 21:33:16 · 5616 阅读 · 4 评论 -
hdu2031进制转换
进制转换Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16621 Accepted Submission(s): 9329Problem Description输入一个十进制数N,将它转换成R进制数输原创 2013-03-16 16:11:37 · 1265 阅读 · 0 评论 -
hdu1412{A} + {B}
{A} + {B}Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8410 Accepted Submission(s): 3438Problem Description给你两个集合,要求{A} + {B}.原创 2013-03-18 17:58:54 · 1260 阅读 · 0 评论 -
电梯里的爱情
小Q系列故事——电梯里的爱情Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 733 Accepted Submission(s): 484Problem Description 细心的同事发现,小Q最近喜原创 2013-03-23 11:17:03 · 1852 阅读 · 0 评论 -
为什么时光不能倒流
小Q系列故事——为什么时光不能倒流Time Limit: 300/100 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 542 Accepted Submission(s): 230Problem Description 我以为我会是最坚强的那一原创 2013-03-23 11:48:49 · 1390 阅读 · 0 评论 -
【openjudge】字符串排序
字符串排序 时间限制: 1000ms 内存限制: 65536kB描述输入5个字符串,每个串的长度均不超过10个字符,将字符串排序后输出。目的:学会使用私字符串函数,strcpy和strcmp。使用注意:#include 提示1:两个字符串可以整体比较大小,使用系统函数strcmp()举例:比较s原创 2013-03-23 23:50:29 · 1444 阅读 · 0 评论 -
hdu1201十八岁生日
18岁生日Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13086 Accepted Submission(s): 4094Problem DescriptionGardon的18岁生日就要到了,他当原创 2013-03-24 15:05:56 · 1457 阅读 · 0 评论 -
hdu1215七夕节
七夕节Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21669 Accepted Submission(s): 6647Problem Description七夕节那天,月老来到数字王国,他在城门上贴原创 2013-03-29 20:29:18 · 1281 阅读 · 0 评论 -
hdu2022海选女主角
海选女主角Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 23513 Accepted Submission(s): 10662Problem Descriptionpotato老师虽然很喜欢教书,但是原创 2013-03-30 16:56:58 · 1066 阅读 · 0 评论 -
hdu2023
求平均成绩Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 45109 Accepted Submission(s): 10708Problem Description假设一个班有n(n Inpu原创 2013-03-30 18:10:40 · 1226 阅读 · 0 评论 -
hdu4520(小Q系列故事——最佳裁判)
小Q系列故事——最佳裁判Time Limit: 500/200 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 769 Accepted Submission(s): 388Problem Description 过去的2012年对小Q来说是很悲催的一年,原创 2013-03-31 19:38:30 · 1037 阅读 · 0 评论 -
hdu2024(c语言合法标识符)
C语言合法标识符Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25521 Accepted Submission(s): 10224Problem Description输入一个字符串,判断其是否是C的合法标原创 2013-03-31 21:35:52 · 1440 阅读 · 0 评论 -
hdu2026(首字母变大写)
首字母变大写Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21670 Accepted Submission(s): 11920Problem Description输入一个英文句子,将每个单词的第一原创 2013-04-01 16:52:09 · 1375 阅读 · 0 评论 -
hdu2041超级楼梯
超级楼梯Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21254 Accepted Submission(s): 10893Problem Description有一楼梯共M级,刚开始时你在第一级,若每次原创 2013-04-01 19:53:39 · 1764 阅读 · 0 评论 -
hdu2021发工资喽
发工资咯:)Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 21481 Accepted Submission(s): 12185Problem Description作为杭电的老师,最盼望的日原创 2013-04-02 13:50:53 · 1316 阅读 · 0 评论 -
Lowest Common Multiple Plus
Lowest Common Multiple PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24414 Accepted Submission(s): 9870Problem Description原创 2013-04-11 21:48:10 · 1077 阅读 · 0 评论 -
单向链表的查询【openjudge】
总时间限制: 2ms 内存限制: 1024kB描述创建一个链式存储的线性表,要求找出该链表中值为x的元素有多少个?输入输入若干整数,以0结束。再输入x的值输出x在链表中出现的次数样例输入3 2 3 3 5 8 5 3 03样例输出4提示本题只有一组测试数据,不需要重复这答题咋一看挺水。但是对我而言还是发现了许多问题。原创 2013-04-25 20:15:58 · 1414 阅读 · 0 评论 -
两个顺序链表的合并【openjudge】
总时间限制: 2ms 内存限制: 1024kB描述已知两个线性单链表A和B中的元素以递增有序排列(数据长度和元素由键盘输入),编写算法将A表和B表归并成一个按元素值递增的有序表C,并要求利用原表(即A和B表的)节点空间存储表C。再输入链之前,先要输入链的长度样例输入61 3 6 7 12 135-1 3 8 10 15 样例输出-1 1 3 3 6 8原创 2013-04-27 13:36:23 · 1388 阅读 · 0 评论 -
【openjudge】数字统计
总时间限制: 1000ms 内存限制: 100000kB描述输入n个整数,统计每个数出现的次数.输入第一行是一个整数n(1输出第一行输出总共有多少个不同的整数.接下来每行输出一个整数及这个整数出现的次数,用空格分隔.输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)样例输入523212样例输出3原创 2013-04-28 22:05:39 · 1820 阅读 · 0 评论 -
人见人爱A-B(链表的算法实现)
人见人爱A-BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 32586 Accepted Submission(s): 9070Problem Description参加过上个月月赛的同学一定还记得其原创 2013-04-30 17:09:39 · 1241 阅读 · 0 评论 -
hdu2043密码
密码Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 22475 Accepted Submission(s): 8960Problem Description网上流传一句话:"常在网上飘啊,哪能不挨刀啊原创 2013-05-26 19:05:46 · 1572 阅读 · 0 评论 -
hdu1870愚人节的礼物
愚人节的礼物Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3218 Accepted Submission(s): 1980Problem Description四月一日快到了,Vayko想了个愚人的原创 2013-05-31 20:36:35 · 1657 阅读 · 2 评论 -
hdu1237简单计算器
简单计算器Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10383 Accepted Submission(s): 3345Problem Description读入一个只包含 +, -, *, /原创 2013-06-01 09:48:24 · 1451 阅读 · 0 评论 -
小米2013年校园招聘笔试题——朋友圈
题目描述:假如已知有n个人和m对好友关系(存于数字r)。如果两个人是直接或间接的好友(好友的好友的好友...),则认为他们属于同一个朋友圈,请写程序求出这n个人里一共有多少个朋友圈。假如:n = 5 , m = 3 , r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和2是好友,2和3是好友,4和5是好友,则1、2、3属于一个朋友圈,4、5属于另一个朋友原创 2013-07-22 16:23:17 · 2249 阅读 · 0 评论