HDU刷题
文章平均质量分 88
画船听雨
和梦想谈一次恋爱,也要疯狂,也要坚持
展开
-
HDu 1312深度搜索---Red and Black
#include #include char a[22][22];int count;void dfs (int x, int y){ if(a[x-1][y] == '.') { a[x-1][y] = '1'; count++; dfs(x-1, y); } if(a[x+1][y] == '.')原创 2013-02-26 21:13:10 · 2743 阅读 · 0 评论 -
HDU1429广搜----胜利大逃亡
胜利大逃亡Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1253DescriptionIgnatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡原创 2013-02-26 21:15:03 · 2946 阅读 · 0 评论 -
HDU 1702 ACboy needs your help again!
这道题还是对栈和队列的一个模拟,FILO表示先进后出,这是栈;FIFO先进先出这是队列,我们自要做到模拟他的过程就行。Problem DescriptionACboy was kidnapped!! he miss his mother very much and is very scare now.You can't image how dark the room he wa原创 2013-03-28 08:29:17 · 2358 阅读 · 0 评论 -
HDU 1059 Dividing 多重背包
这道题的意思是,有六件物品每件物品的价值依次是1,2,3,4,5,6每件物品的个数各不相同。求所有物品价值是否能够平分,就是总价值的一半是否能由当前的物品的价值组合出来。所以这是一道多重背包的问题。状态转移方程是:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0DividingTime Limit: 2000/1000 MS (Java/Others)原创 2013-09-06 20:44:24 · 942 阅读 · 0 评论 -
HDU 1069 Monkey and Banana
题目的大意是,人们对于猴子的聪明程度做了一个实验,在高处挂着香蕉然后给猴子一些箱子让他们任意的组合求最大的高度。但是要注意的是:1.给出的箱子矩形的三条边;2.每个箱子有六个面然后有三对的面积不一定相同;3.搭箱子的时候注意上面箱子的长与宽都要严格的小于下面的箱子,题目中说如果相同的话猴子就无法踩着啦。分析完题目之后我们就会发现,只要对箱子的长与宽进行排序,解题的策略是从前面的箱子中枚举找到一原创 2013-09-08 09:54:33 · 1250 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese
首先吐槽一下英语水平真心的不好啊,读了好几遍,又是百度又是谷歌的终于看明白了啊、、、题目的大体意思是:一个老鼠他很厉害啊,他在一个最大100*100的数组中藏了很多的蛋糕,他每次(0,0)点开始吃,由于那只猫的原因他每次最多前进K个格子,但是走是有条件的就是每次走到的点所藏的蛋糕必须比之前的多、、一开始以为是bfs但是因为他求的是吃到最多的蛋糕的数量所以会导致不是最长路的情况下也会吃到的最原创 2013-09-09 21:32:10 · 1005 阅读 · 0 评论 -
HDU 1506 Largest Rectangle in a Histogram
先说一下题意:给出N个柱状图,求连续的高度相同时最大的面积(就是说如果两个高度如果不相同求面积的时候取矮的)。一开始我求的状态转移方程是:dp[i] = max{h[i] , (num[i-1]+1)*min(h1[i-1],h1[i]) (如果后面小h1[i]更新成min(h1[i-1],h1[i]))};num[i-1]表示之前连续的个数;但是这个方程式是错误的如果遇到1,1,1,1,3,原创 2013-09-10 17:25:16 · 805 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!
首先说一下,一开始没读懂题目啊,之前做过的一道题目有点类似,影响了理解题意啊、、、题目的大意就是:给你N个棋子,每个人可以移动棋子,但是棋子移动的时候要注意:1,每个棋子只能向后移动不能向前移动:2,每个棋子移动到的下一个棋子必须比之前的大;3,每个棋子移动的范围是不确定的可以无限的移动。所以解题的思路就是:从1到N枚举所有的棋子,在它的后面找到比它大的数字,然后状态转移方程是:dp[j]原创 2013-09-10 19:45:35 · 784 阅读 · 0 评论 -
HDU 1114 Piggy-Bank完全背包
注意这里的E是代表存钱罐为空时的质量,F代表存钱罐存满时候的重量。Piggy-BankTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7588 Accepted Submission(s): 3796原创 2013-05-31 19:47:21 · 2658 阅读 · 1 评论 -
HDU 1243 反恐训练营
这道题的解法和最长公共子序列很相似,就是多一个判断,是否更新之后的得分最高。反恐训练营Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2550 Accepted Submission(s): 582原创 2013-09-04 20:51:35 · 924 阅读 · 0 评论 -
HDU 4722 Good Numbers 2013年成都邀请赛原题
题意很简单就是给你两个数字,A,B。让你求出A和B之间所有 Good Numbers 的个数。 Good Numbers的定义是:如果一个数各个位置上的数字的和是10的倍数那么这个数就是 Good Numbers。比如19。因为1+9 = 10 所以19是 Good Numbers。由于数据范围很大10^18所以一定不可能是搜索,应该是一个数学推理;一开始我跟ZP学的,比如9543原创 2013-09-13 11:15:25 · 956 阅读 · 0 评论 -
HDU 1058 Humble Numbers
这道题是一道典型的DP的题目,在我们年轻的时候崔老师就给我们讲过啊、、、但是当时年少无知不会啊、、现在崔老师又给讲过了一遍茅塞顿开啊,感谢崔老师啊!这道题目的状态转移方程是dp[i]=min{dp[n]*2, dp[j]*3, dp[k]*5, dp[t]*7}其中n,j,k,t;谁最小谁自加1;理解很简单,就是每一步找到满足条件的数字,从前向后找啊、、Humble Num原创 2013-09-05 21:17:30 · 888 阅读 · 0 评论 -
HDU 4727 The Number Off of FFF 2013年成都全国邀请赛原题
题意很简单:就是给你一串连续的数字,他应该是递增的后面比前面大一如果出现了不是大于一的情况输出这个数的位置。标准的水题,但是很坑的是,只输入一个数的时候他要输出1;我感觉一个数应该是0结果错了好几遍啊、、sad啊、、神坑啊、、、The Number Off of FFFTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 3原创 2013-09-11 19:14:36 · 1408 阅读 · 0 评论 -
HDU OJ 1081 To The Max
一开始做的时候没有思路,不知道该怎么做,感觉暴力肯定会超时的。。没敢做,后来看了题解感觉方法不错,就学习了。。。参考博客 http://blog.csdn.net/acm_davidcn/article/details/5834454 感谢这位大神。这题的意思就是找到子矩阵中最大的和值。这是学习的解题思路:DP 求最大和子矩阵 , 可以用最大和连续子序列的思路解 .首先 , 读数原创 2013-06-04 21:05:22 · 2258 阅读 · 0 评论 -
HDU 2094 产生冠军
这是在拓扑排序的栏中找到的题目,但是拓扑排序不精通啊。跟网上的一个同学学了一下如果左边出现的只有一个没有在右边出现就说明了一定有冠军啊、、很好的思路啊、、这是学习的连接啊、、http://www.cnblogs.com/Lvsi/archive/2011/05/13/2045333.html产生冠军Time Limit: 1000/1000 MS (Java/Others)原创 2013-08-14 16:05:20 · 3126 阅读 · 0 评论 -
HDU 2602 OJ Bone Collector
Bone CollectorTime Limit: 1000MS Memory limit: 65536K题目描述 Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bon原创 2013-05-21 21:24:01 · 2284 阅读 · 0 评论 -
HDU 1285 拓扑排序-- 确定比赛名次
Description有N个比赛队(1 Input输入有若干组,每组中的第一行为二个数N(1 Output给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。原创 2013-02-26 21:08:27 · 2887 阅读 · 0 评论 -
HDU 2544 最短路 Dijkstra 算法、 Floyd 算法 Bellman_ford算法
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2544最短路Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19055 Accepted Submission(s):原创 2013-04-19 21:32:17 · 2400 阅读 · 0 评论 -
HDU 1203 I NEED A OFFER! (dp+概率)
这题其实没用到什么概率公式啊,就是相互独立事件求一个对立的事件。状态转移方程:dp[j] = min(dp[j], dp[j-f[i].w]*(1-f[i].p))。以所花费的钱dp,求出来录取不到的小值,反过来就是可以录取到的最大值。#include #include #include #include #include #include #include #include原创 2014-02-21 19:44:01 · 897 阅读 · 0 评论 -
HDU 2159 FATE (多重背包)
就是一个裸的多重背包,竟然想复杂了啊。状态转移方程:dp[i][j] = max(dp[i][j], dp[i-lose[k]][j-1]+add[k]);FATETime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 63原创 2014-02-21 20:46:03 · 748 阅读 · 0 评论 -
HDU 1421 搬寝室 (dp+小贪心)
这个题目的意思就不解释了啊,就是找到最优的解,使消耗的体力最小。先说状态转移方程式:dp[i][j] = min(dp[i-1][j], dp[i-2][j-1]+(w[i]-w[i-1])^2)。解释一下:这里面的i代表当前取到了第几件物品,j表示当前已经选择了j对。dp[i-1][j]这里表示的是当前这件物品i没有选择,而最小的价值是之前i-1的状态延续过来的。dp[i-2][j-1]+(原创 2014-02-21 19:13:28 · 802 阅读 · 0 评论 -
HDU 1160 FatMouse's Speed(求最长递减序列+记录路径)
这道题的意思是:有人认为老鼠越胖跑得越快。现在给你n个老鼠,给出每个老鼠的重量和速度。按重量排序后求出来有多少老鼠的的速度是一个递减序列。看看是否那个人是否正确。输出序列的长度,还得输出这个序列上老鼠原来在输入时的位置。所以要用一个数组保存前驱。注意:Special JudgeFatMouse's SpeedTime Limit: 2000/1000 MS (Java/Ot原创 2014-02-23 09:47:31 · 830 阅读 · 0 评论 -
HDU 1208 Pascal's Travels(记忆化搜索)
记忆化搜索这种东东以前好像没写过,这是第一次写吧,其实也挺好理解的啊。就是一个dp与搜索的结合,dfs后保存每一步的值,然后输出就行了啊。Pascal's TravelsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1原创 2014-02-23 15:15:10 · 835 阅读 · 0 评论 -
HDU 1158 Employment Planning (简单二维dp)
先说一下题意:就是有一个工程要干m月,每个月需要num[i]个工人,每个工人雇佣、工资、解雇,分别需要花费,h、s、f的钱,让你求出这m个月怎么安排,才会使得花费最小。状态转移方程很好推啊,就是这个月的花费可以有三种情况组成。1.延续上月的,不再雇佣,不在解雇工人。发工资;2.解雇一部分人,付解雇的钱,再发工资;3.再雇佣一部分人,再发工资;所以方程式是:if(k > j) dp[原创 2014-02-22 14:33:28 · 943 阅读 · 0 评论 -
HDU 1864 最大报销额 01背包问题
就是按照要求把能报销的单子找出来,然后就是对这些满足报销的单子进行01背包的处理,这个单子是报销还是不报销,相当于放还是不放。状态转移方程是:dp[j] = max(dp[j], dp[j-1]+w[i]);最大报销额Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other原创 2014-02-11 14:19:13 · 1016 阅读 · 0 评论 -
HDU 1224 Free DIY Tour(简单dp?+记录路径)
说是dp感觉还不若说是最短路的求法啊,就是每个城市选不选则的依据是之前的是否比他还大。其实感觉就是bfs找到最大值,再记录路径。为毛在HDU的难度还是2啊。不理解啊。。。怎么分的啊、、、Free DIY TourTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T原创 2014-02-23 16:26:45 · 784 阅读 · 0 评论 -
HDU 1244 Max Sum Plus Plus Plus(二维dp)
一开始想到的状态转移方程是:dp[i][j] = max{dp[i-1][j], dp[i-1][j-1] + sum[k]-sum[k-l[j]]。表示从第i个数字中,已经选择了j个关系。枚举k来找到最优问题。但是这么是不对的啊,因为这样考虑的话你得考虑一下i-1个结束的位置。否则的话就会有重复子区间,不符合要求啊。后来 看了网上有一人把状态转移方程是这么写的:dp[i][j] = max(原创 2014-02-24 08:21:41 · 946 阅读 · 0 评论 -
HDU 1248 寒冰王座 裸完全背包
裸的完全背包,就是求出最大可以组成的值然后用总的钱数减去组成最大的价值,剩下的就是小费了啊。寒冰王座Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9383 Accepted Submission(s): 4735原创 2014-02-11 10:52:57 · 780 阅读 · 0 评论 -
HDU 1284 钱币兑换问题 完全背包
和上一篇博客相同,就是注意要用到大数,但是我数组开打了开成1000000竟然超时了一次啊。。。。sad。。。钱币兑换问题Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4740 Accepted Submissio原创 2014-02-11 10:42:28 · 946 阅读 · 0 评论 -
HDU 2546 饭卡 01背包+贪心
把5块钱单独拿出来买最大的东西,这样可以使的余额最小,然后在其他的n-1件物品中以钱数开始dp,找到可以购买到的最大的价值,然后减去就OK了啊。dp的状态转移方程:dp[j] = max{dp[j], dp[j-w[i]] + w[i]]};PS:另附ZP说的另一个版本的,是通过标记的方法找到可以到达的最小的余额。。。饭卡Time Limit: 5000/1000 MS (J原创 2014-02-11 15:43:11 · 990 阅读 · 0 评论 -
HDU 2289 Cup 数学+二分
这道题的题意是:给你一个杯子,然后告诉你杯子的下顶面的半径,上顶面的半径,杯子总的高度,还有就是杯子中水的体积。(这里水的体积竟然可以比杯子还大啊!),然后输出现在杯中水的高度。注意这里的模型是一个圆台。圆台的面积公式是V = PI*(r1*r1+r1*r2+r2*r2)*h/3。主要是想到要把圆台补成圆锥,然后用相似三角形找到高度比与半径比的关系,之后可以用数学方法推算出比例,然后求出高原创 2014-02-15 14:43:17 · 1798 阅读 · 0 评论 -
HDU 1003 Max Sum 求最大连续和
就是一个求数列最大连续的和,然后记录初末位置。思想是dp[i] = {dp[i-1]+a[i], a[i]}Max SumTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 126645 Accepted Submis原创 2014-02-20 09:25:34 · 853 阅读 · 0 评论 -
HDU 1556 Color the ball 线段树入门题
典型的线段树,区间的更新,统计区间内元素的和。Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7031 Accepted Submission(s): 3668Probl原创 2014-02-20 10:28:39 · 873 阅读 · 0 评论 -
HDU 1166 敌兵布阵 线段树入门题目
跟HDU1754 差不多,就是线段树的动态修改,与查询。敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34753 Accepted Submission(s): 14770Problem原创 2014-02-20 17:09:56 · 923 阅读 · 0 评论 -
HDU 1227 Fast Food(简单二维dp)
题意是在n个餐厅之间选择k个地方修建仓库使得,各个餐厅到仓库的距离和最小。dp[i][j] = min{dp[i][j], dp[i-1][m]+w[m+1][j]}。i表示仓库数目,j表示第几个餐厅。状态转移方程式的意思是:到达j的时候区间(i,j)上所拥有的最小的值。到达j的时候可以选择j位置上不修建仓库dp[i][j] = dp[i][j]。或者选择修仓库那么之前已经有i-1个仓库修建好原创 2014-03-04 17:41:22 · 1010 阅读 · 0 评论 -
HDU 1428 漫步校园(SPFA+记忆化搜索)
先用spfa求出每个点到达终点的最小距离,然后再记忆化搜索终点到原点最多的路径。漫步校园Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2615 Accepted Submission(s): 772原创 2014-03-05 20:55:39 · 799 阅读 · 0 评论 -
HDU 1466 计算直线的交点数(简单dp)
解体思路:设a1+a2+......+an = n;代表每组平行的直线有ai个。所以一共有交点s=(a1*(n-a1)+a2*(n-a2)+....+an*(n-an))/2。化简的到2*s = (a1n+..+an*n)-(a1^2+a2^2+...an^2) = (n*n)-(a1^2+a2^2+...an^2)。所以枚举第i条直线中有多少个ai的和。if(dp[i-k][j-k*k] =原创 2014-03-08 09:46:26 · 875 阅读 · 0 评论 -
HDU 4472 Count(记忆化搜索)
竟然是记忆化搜索,一直以为是递推。。。。CountTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1184 Accepted Submission(s): 783Problem Descriptio原创 2014-03-17 21:56:13 · 886 阅读 · 0 评论 -
HDU 4020 Ads Proposal(很巧妙的哈希)
题目的意思是:一共有n个人,一共在百度上发布m个广告。每个广告的时间长度为lenth。有q次询问让你求出每次询问下每个人点击量排前k个的时间长度的和。(这里要注意有可能这个人发的广告的次数少于k个。这样和就是他发布的所有的时间和)。解题的思路是:先对点击数量进行排序同时记录原先的下标。以点击量的数量数组排序后的下标进行hash。然后用vis标记数组记录每个ower出现的次数(vis中每个owe原创 2014-03-19 22:05:35 · 790 阅读 · 0 评论 -
HDU 1074Doing Homework(状态压缩dp)
这道题目开了好长时间了啊,后来一直忘记了做,今天原创 2014-04-15 19:10:19 · 652 阅读 · 0 评论