HDU OJ
文章平均质量分 53
freedom098
这个作者很懒,什么都没留下…
展开
-
1020:Encoding
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1020方法:硬做思路:一开始想用hash统计各个字符出现的次数,但是后来发现领会错题意了,于是乎干脆就按照题意大模拟了。这个题要说难一点的地方,那就是首末端的边界处理了。难点:首末端边界,可以先让出首端,单独处理末端数据。#include#includeusing namespace原创 2015-10-15 19:54:36 · 346 阅读 · 0 评论 -
1241:Oil Deposits
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241方法:dfs思路:一看题觉得搜索倒是不难,难就难在怎样判断连通图。后查阅资料,发现了一种与dfs巧妙结合的神奇方法,真是拜服啊!首先还是按照一般原则对地图进行深搜,不同的是,我们的dfs函数不返回任何值,其作用就是对原图进行修改。修改的方法是,以一个点为基准,向他周围八个方向辐射,如果这些原创 2015-09-30 19:40:29 · 322 阅读 · 0 评论 -
1240:Asteroids!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240方法:bfs思路:和一般的地图搜索相似,但是这个涉及到了三维空间,因此走的方向也就拓展到了六个。如果比较熟悉bfs的话,那么本题写出bfs应该不算难,主要是这六个方向的表示问题,可以把这六个方向储存为一个6行3列的数组,调用时只需要不断遍历这个数组就可以了。还要注意,一般bfs地图题都会涉原创 2015-09-30 17:31:14 · 407 阅读 · 0 评论 -
1253:胜利大逃亡
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1253方法:bfs思路:很常规的三维广搜,但是问题是这个题的数据量很大,直接广搜超时了好几发。需要在一些细节上做一些修改,比如,在广搜过程中一旦发现目前时间已经超过了规定时间,立刻返回。如果这一过程等到bfs结束后在main函数里判断,则会超时。这样做会一旦有一组数据出现了超过规定时间,那么就会原创 2015-10-01 10:20:13 · 382 阅读 · 0 评论 -
2200:Eddy's AC难题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2200方法:数学思路:说实话,这个题出得不太清晰,看到网上的一些解释才算是弄懂了题意。题目意思是,给你n个人,先在其中选出一部分人,然后再把他们分成两组,问有多少种分法。其中题目中所说的分数要求在我看来基本没用,因为你根本不知道所有人的成绩,我们就假设成绩是排序好的,然后按照次序取人就可以了。这原创 2015-09-30 16:14:52 · 480 阅读 · 0 评论 -
1075:What Are You Talking About
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075方法:map思路:一看就是第一反应就是map,后来查了一下还可以用字典树,字典树原来做数学建模的时候搞过一回,有点忘记了,还是用map更方便。如果用map就没什么好说的了,主要是在读入要翻译的文本的时候,一些特殊字符,比如空格换行的处理,我这里借鉴了网上逐个字符判断的一种方法,感觉还可以。原创 2015-09-29 17:50:18 · 372 阅读 · 0 评论 -
1976:Software Version
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1976方法:无思路:一道大水题,我本来是想按照题目要求逐层的判断就可以了,但是那样显然有点麻烦。后来一想,这些版本号之所以有主有次,就是因为其权重不同,那样的话完全可以将三个版本号融合成一个三位数,主版本号在百位,次版本号在十位,以此类推。这样最后比较三位数大小就可以了。这个方法好就好在如果将来原创 2015-09-29 16:32:35 · 459 阅读 · 0 评论 -
1181:变形课
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1181方法:bfs思路:题目要求寻找到有这样的咒语即可,所以用bfs就可以。不过本体的bfs比较特殊,并不是很符合套路,但是仍然可以按照模板写出。重点在与flag在什么位置清零,j在每一组数据完成之后一定要清零,另外还要注意mark数组一定要有,如果不标记,那么就会出现堆栈溢出的情况,因为很有可原创 2015-09-29 19:51:33 · 665 阅读 · 0 评论 -
1257:最少拦截系统
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257方法:贪心思路:这道题原来做的时候是照着葫芦画瓢用DP做的,现在基本都忘的差不多了,DP确实很难,现在还不太懂。今天刷贪心,发现这题用贪心会简单一些。目前有两种基本思路,一是从头到尾捋一遍,只要能拦截的都拦截掉,然后再重新捋一遍,直到所有导弹都被拦截掉,这种方法比较直观。二是每次导弹来的时原创 2015-09-27 11:23:38 · 281 阅读 · 0 评论 -
2187:悼念512汶川大地震遇难同胞——老人是真饿了
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2187方法:贪心思路:很简单很常规的一道贪心题目,这一这里要求的是购买大米数量最多,所以我们排序的时候要按照从小到大的顺序对单价进行排序,确保单价最低的在前。这样就可以保证可以买到最多的米。难点:无#include#include#includeusing namespace st原创 2015-09-27 09:17:02 · 430 阅读 · 0 评论 -
1026:Ignatius and the Princess I
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026方法:bfs+记忆路径思路:这是我刷题以来见过的最难的一道题,不但要搜索出最短时间,而且还要记录最短时间所走过的路径,而且还要按照那种诡异的方式进行输出。总之,这道题没有一个方面是好处理的。首先,由于是找最短路径,因此用bfs比较合适,另外,由于要输出路径,所以还要开辟一个数组来储存路径。原创 2015-09-28 18:42:32 · 336 阅读 · 0 评论 -
1018:Big Number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1018方法:数学思路:只要碰上关于阶乘的问题,基本上就是大数问题了,因此就不能傻啦吧唧的直接做了。本题要求位数,可以联想到log运算中可以把一个数的位数分离出来,比如log(100) = 2,无论n为多少,都可以用log提取出其相应的位数,最后循环求和即可。参考分析:123456=1.原创 2015-09-28 08:55:32 · 323 阅读 · 0 评论 -
2081:手机短号
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2081方法:无思路:超级大水题,但是借着这个题可以练一下c++中的string类型,之前一直没敢尝试,string可以直接用cin读入。难点:无#include#includeusing namespace std;int main(){ int n; strin原创 2015-09-07 20:13:31 · 350 阅读 · 0 评论 -
2037:今年暑假不AC
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2037方法:贪心思路:这道题的贪心算法不太明显,其实需要排序的要素是每个节目的结束时间,通俗上说,只有节目尽早结束,那么一般情况下他的开始时间也不会很晚,节目早结束就可以尽快看下一个节目。在此有一个严谨的用反证法证明过程,详见相关参考资料(《王道计算机论坛考研机试指南》)。只要明确了这一目标,那原创 2015-09-27 09:40:00 · 378 阅读 · 0 评论 -
1272:小希的迷宫
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272方法:并查集+hash思路:图论题,首先想到的是就是并查集,注意这里要求判断是否成环,那么并查集在查找的时候就不能有共同的父节点,如果有共同的父节点,那么这两个点再有连线的话比成环。另外,还需要判断是否有多个根节点,按照题意,这个图必须是只有一个集合,也就是只有一个根结点才对。另外还有注意原创 2015-10-05 11:41:14 · 323 阅读 · 0 评论 -
1213:How Many Tables
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213方法:并查集思路:没什么好说的,非常规范的并查集方法,不过要注意一点的是数据的范围是1-1000,所以在遍历tree数组的时候要注意起点和终点,其余的均为并查集常规做法。难点:注意数据范围。#include#includeusing namespace std;int tre原创 2015-10-05 15:22:25 · 308 阅读 · 0 评论 -
2567:寻梦
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2567方法:无思路:超级大水题,最简单的思路就是直接输出,不要拼凑字符串,反正输出对了那就对了!AC是王道。难点:无#include#includeusing namespace std;int main(){ int n; char str1[60],str2[原创 2015-09-18 16:12:20 · 480 阅读 · 0 评论 -
1231:最大连续子序列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1231方法:暴力、分治思路:首先用暴力法求解,遍历所有的下标组合,然后求所有这些下标组合的和,求出最大的即可。第二种方法是分治法,最大和子序列一定会出现在左半部分、右半部分和跨越中间点的部分,因此可以分成三部分考虑,这样就可以递归求解了。详细代码过程见注释,算法分析见算法导论。难点:对于分治原创 2015-10-13 18:08:06 · 369 阅读 · 0 评论 -
2600:War
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2600方法:hash思路:算是一道比较简单的hash题,不过我真的不明白为什么要搞出来一个字符串,其实一点用都没有。没什么难度,只需要将发生战争的年份标记一下就可以了,由于数据量在-600万-600万之间,为了节省内存,为谨慎起见,我还是用了一个bool型的hash数组。难点:注意需要偏移,原创 2015-09-26 10:13:56 · 285 阅读 · 0 评论 -
2111:Saving HDU
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2111方法:贪心思路:很明显的贪心+结构体排序,关键是要看清题意,要求的是每体积的单价和体积数,所以相对于一般的这类题目倒是省去了求取性价比的那一步,反而更简单了。但是还是要注意,在写循环主体的时候,我直接写的是根据背包是否被耗尽来判断的,但是实际上背包可以有空余而物品耗尽了,这种情况也是需要考原创 2015-09-24 18:24:28 · 356 阅读 · 0 评论 -
2106:decimal system
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2106方法:进制转换思路:算是比较简单的一道题目,乍看上去比较简单,但其实还是有一些陷阱的。首先,给定的输入形式要求需要用字符串解析出数字和进制;另外,数字可以是多位的,需要一位位的读出并累加,累加过程中可以直接使用进制进行加权,进制比较好说,但是注意进制包含了一个两位数10,所以这种情况单独拿原创 2015-09-24 17:18:15 · 367 阅读 · 0 评论 -
1264:Counting Squares
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1264方法:hash思路:注意此题的数据为100以内,所以数据量较小,可以使用哈希表。需要注意的是,这里我们标记hash表的时候,每一个平方块用一个顶点的坐标标记出来就可以了,无须用多个标记,当然,我一开始做的时候认为是有多少点就是面积是多少,后来发现是点与点之间的距离才是真正的长度,索性就检查原创 2015-09-23 16:42:23 · 373 阅读 · 0 评论 -
1280:前m大的数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1280方法:hash排序思路:磁体明显是hash,数据也不大,基本可以满足要求,唯一要注意的是需要控制一下输出格式。;另外,如果有多个值相同的时候,需要输出多个值,因此hash表中储存的就应该是该值的数目,而不是只用作标记此数值出现过。难点:输出格式控制。#include#includ原创 2015-09-22 18:49:47 · 299 阅读 · 0 评论 -
2073:无限的路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2073方法:找规律思路:这是我觉得水题中比较有水平的一道题目,基本思路是首先找到一个每个点转移到下一个点的规律,规律为,如果纵坐标为0,则下一个点横坐标为0,下一个点纵坐标为当前点横坐标+1,如果当前点纵坐标不是0,那么横+1,纵-1.第二,注意数据给出的情形不是严格按照点的生成规律的,也就是说原创 2015-09-21 17:37:52 · 562 阅读 · 0 评论 -
2563:统计问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2563方法一:dfs打表思路:方法一比较流氓,完全是利用了数据小这一点,不过也算是锻炼一下dfs吧,一看题,整个题目叙述简直就是迷宫题的翻版啊有木有,不假思索直接dfs了,然后跪了。首先,dfs速度太慢,必然超时;此外这里的迷宫的起点选择要注意,选择在迷宫矩阵的正中央,由于n不会超过20,矩阵开原创 2015-09-19 22:27:13 · 429 阅读 · 0 评论 -
2564:词组缩写
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2564方法:字符串解析思路:整整被坑了一个小时,我无语了。首先,注意要求,单词内大小写是都有的,不是只有小写!另外,注意首端有多个空格的情况需要处理。还要注意字符中间有多个空格的情况。我采取的的策略是,先把所有字母的字符全部转为大写,这样一来,剩下的工作就只有筛选了。难点:不要用scanf读原创 2015-09-20 09:26:20 · 910 阅读 · 0 评论 -
2562:奇偶位互换
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2562方法:无思路:超级大水题,直接按要求做就行,在此知识记录一下代码。难点:无#include#include#includeusing namespace std;int main(){ int t; char str[100]; while(cin原创 2015-09-19 19:15:24 · 404 阅读 · 0 评论 -
2566:硬币统计
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2566方法:枚举思路:大水题,5分钟ac,由于数据量不大,完全可以使用一个三重循环枚举。难点:无#includeusing namespace std;int main(){ int t,n,m; while(cin>>t) { while(原创 2015-09-19 18:04:38 · 329 阅读 · 0 评论 -
2700:Parity
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2700方法:无思路:俗话说实践出真知,这道题本意就是串口校验码的计算过程的复现,如果末尾指定为奇数校验,那么需要整个字符串内1的个数是否为奇数,偶数校验同理。这个问题作为串口通信校验位的基本问题可以说很经典,我记得考试的时候我们还为此争论了一个上午,实际上,花十分钟做一些这道题,一切都迎刃而解,原创 2015-09-18 15:40:55 · 348 阅读 · 0 评论 -
2568:前进
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2568方法:模拟过程思路:大水题,不过挺有意思,重点在于模拟题目所叙述的过程,因为所给的数据量不大,可以用这种方法。难点:无#includeusing namespace std;int main(){ int n; while(cin>>n) {原创 2015-09-18 15:53:23 · 398 阅读 · 0 评论 -
2717:Catch That Cow
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717方法:bfs思路:由于搜索空间还是很大的,如果用bfs的话很容易就会造成递归堆栈溢出,而且时间复杂度也会很高,所以采用bfs。这是我第一次手写bfs,借鉴了一下网上高手的经验,在此谢过。原理都是不难,只需要按照bfs的步骤一步步来就可以了。由于这里需要记录两个数据,因此会用到结构体,这样的原创 2015-09-28 10:58:41 · 296 阅读 · 0 评论 -
1718:Rank
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1718方法:排序思路:这道题本身难度还不算高,主要是有一个坑,一开始排序的时候,若出现成绩一样的情况,我在cmp函数里做了按字典序排列的处理,但是后来发现这道题目实际上是要求允许出现并列的情况,比如第一名100分,第二名33分的有两个人,再往下就是第四名了,因此排序完成后只需要统计多少个人比指定原创 2015-09-05 16:18:06 · 531 阅读 · 0 评论 -
1048:The Hardest Problem Ever
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1048方法:打表查询思路:建立对应的查询数组,本来想用循环数组处理的,但是鉴于这种密码是前移的方式,c++取余都是与被除数符号相同的,因此很难实现,相比之下,打表查询更加简单直观。难点:怎么处理输入过程是个难点,这里借鉴了别人用c++getline的方法,scanf不能读空格,而gets也是原创 2015-08-03 16:40:48 · 335 阅读 · 0 评论 -
1009:FatMouse' Trade
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1009方法:贪心思路:如果想要获得最大的收获,最好的办法就是每次都用最少的钱换到最多的东西,也就是说我们应该最先选择性价比最高的物品,这样思路就很清晰了,我们按照性价比对物品排序,然后开始取物品就可以了。难点:数据类型的转换问题,其实也可以将所有数据统一成double,一劳永逸。#inc原创 2015-08-03 12:07:55 · 351 阅读 · 0 评论 -
1003:Max Sum
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003方法:DP思路:本题就是求最大连续子序列和,很明显是DP。思路是先开始扫描数组,从1开始,不断求和,并比较和与最大值的关系,这一过程可以在输入过程中就能完成,当和大于最大值的时候,说明加上的当前数应算作最大和子序列当中,所以标记到结束endd里,如果加和小于最大值,说明当前数不能算如最大和原创 2015-08-02 17:44:53 · 322 阅读 · 0 评论 -
1005:Number Sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1005方法:找规律思路:直接做也没啥问题,如果多次求模的话不会爆int的,但是会超时。也就是说我们不能直接得到n之后就去运算,一直算到n为止,这样时间上消耗太大。转换思路,求模一般是有规律,这个题也不例外,但是由于A、B不同,这种规律也不相同,但是在A、B一定的情况下,只有7*7=49种组合。只原创 2015-08-02 16:49:37 · 266 阅读 · 0 评论 -
1013:Digital Roots
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1013方法:大数据模拟思路:这个题坑就坑在他没有说是大数据题,所以按照常规思路做出来了,很顺利地wa了。考虑大数据时也比较简单,用数组来模拟,由于数组中各位数字第一轮加起来后数据就很小了,所以可以进一步使用原来的小数据方法进行处理。这个题网上大神有一种很巧妙地思路,那就是对9取模,这样做将进一步原创 2015-08-02 19:16:07 · 267 阅读 · 0 评论 -
1010:Tempter of the Bone
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010方法:深搜dfs思路:第一次做迷宫问题,问题还是很多的,假设暂不考虑剪枝的问题,直接进行dfs,思路是在每一个位置处,下一步都会有四种可能,按照dfs一般原则,需要对终止条件先进行判断,再进行递归,所以这里首先要判断是不是到达门了,不过在判断到门之前,还要看是不是已经越出了迷宫边界或者是遇原创 2015-08-28 17:08:00 · 250 阅读 · 0 评论 -
1196:Lowest Bit
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1196方法:求二进制数思路:就是求二进制数,但是不需要完全求出,我只需要知道在哪一位第一次出现了1即可,有点类似于二分求幂中分解二进制数的思路。难点:无#includeusing namespace std;int main(){ int num; while(ci原创 2015-08-28 14:22:39 · 234 阅读 · 0 评论 -
1194:Beat the Spread!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1194方法:无,解方程算是吗?思路:大水题,但是有一个细节需要关注,那就是比赛的得分要求是非负的整数,所以在解完方程后要关注到数据的筛选问题。难点:关注细节处理#include using namespace std;int main(){ int t,sum,sub,n1原创 2015-08-28 14:12:06 · 343 阅读 · 0 评论