ACM Solving Report
Sherlock_____Holmes
这个作者很懒,什么都没留下…
展开
-
第二天:poj1002(虽然完成了题目但是时间太久了。。。加油坚持下去)
这道题目是典型的数据存放+处理的题目。 1.首先也是选择存放数据的方式,可以用数组分别存放信息和数量,可以用链表或者结构体。(但是用链表好像时间会超,至少本人一开始使用链表写的但是时间超限了,所以最后还是用数组成了,可能是因为排序上面和添加元素个数上面的时间花的太久,毕竟链表的操作还不是很熟悉) 2.处理数据,排序直接用sort或者qsort最好,省力。链表我写了冒泡但是感觉时间太长了。还是得用原创 2015-04-03 16:58:03 · 711 阅读 · 0 评论 -
第十四天:poj1016(模拟,看懂题目最重要!!!)
这次终于是来了,就是那种见到题目就想用dfs去解的那种感觉来了。题目意思很明确,就是分价值1-6的东西,两个人分到的应该相同。首先想到的是,计算总的价值,然后如果是奇数的话,那就肯定不能分了,如果是偶数的话,只要满足价值能到总价值的一半的话,那么就可以了。 注意每次输出之后有一个空行,我也是PE了之后才注意到的,很容易忘记的。。。然后是算法:首先1-6搜索,然后搜到一个之后继续向下,1-6搜索,每原创 2015-04-17 20:49:15 · 662 阅读 · 0 评论 -
第十三天:poj1015(dp来了,我还没准备好o(∩_∩)o )
这次终于是来了,就是那种见到题目就想用dfs去解的那种感觉来了。题目意思很明确,就是分价值1-6的东西,两个人分到的应该相同。首先想到的是,计算总的价值,然后如果是奇数的话,那就肯定不能分了,如果是偶数的话,只要满足价值能到总价值的一半的话,那么就可以了。 注意每次输出之后有一个空行,我也是PE了之后才注意到的,很容易忘记的。。。然后是算法:首先1-6搜索,然后搜到一个之后继续向下,1-6搜索,每原创 2015-04-16 18:59:59 · 449 阅读 · 0 评论 -
第十二天:poj1014(又见dfs,这次有图有真相)
这次终于是来了,就是那种见到题目就想用dfs去解的那种感觉来了。题目意思很明确,就是分价值1-6的东西,两个人分到的应该相同。首先想到的是,计算总的价值,然后如果是奇数的话,那就肯定不能分了,如果是偶数的话,只要满足价值能到总价值的一半的话,那么就可以了。 注意每次输出之后有一个空行,我也是PE了之后才注意到的,很容易忘记的。。。然后是算法:首先1-6搜索,然后搜到一个之后继续向下,1-6搜索,每原创 2015-04-15 21:05:12 · 429 阅读 · 0 评论 -
第七天:poj1009(题目读不懂,读懂了模拟时间超限,看来找到规律才是王道)
首先题目是英文的,所以一开始就没有读懂题目,连输入输出都没懂。 题目的意思是,要你判断这个方块相邻的一圈方块分别和这个方法的绝对值,求其中的最大值。 我首先想到的就是模拟,然后去求,但是10000000这么多的数据时间超限是一定的,所以我就真的想不出来了。 查了网上大牛的思想: 主要的是这句话 要利用pair,就必须懂得“跳跃式编码”,就是说只在像素发生变化的位置进行编码,而像素没有变化的原创 2015-04-09 09:40:05 · 613 阅读 · 0 评论 -
第十一天:poj1013(水题,思路正确清楚,很简单)
题目意思看清楚: 然后最好的思路是下面这三条**1、 平衡状态,两边都是真的没有假的; 2、非平衡状态,所有没有参与称重的硬币都是真的(测试中的其他硬币,并且可以结合第一的真缩小范围); 3、若有一枚硬币既出现在重的一边,又出现在轻的一边,则这枚硬币是真的(这个我一开始没有考虑到,后面才知道会有这种可能性)**加油么么哒!!!!原创 2015-04-14 21:33:38 · 554 阅读 · 1 评论 -
第六天:poj1008(题目很水,但是题目一定要仔细审题哦!)
1004:简单的求和之后求平均值,是个人都会的1005:稍微有点讲究,不能算距离去比较,而是要用算完的面积去比较,更精确一些1006:重点是这道题目!! 首先看完这道题目我的第一个想法是模拟,一个个往上加周期,一样的话输出,可是我马上就觉得这样肯定太烦所以想了别的办法。 首先是从21252开始:一看这个数据就非常的奇怪?怎么会是这么一个怪的数据呢?然后23 * 28 * 33 =21252于是让原创 2015-04-08 21:20:31 · 439 阅读 · 0 评论 -
第十天:poj1012(约瑟夫环。。。最近总是它)
对于约瑟夫环的问题,在最近总是碰到,我也不知道为什么,所以从一开始的什么的不懂,到现在有很多方法可以解决了。对于问题本身:就是一个环形的人圈,然后报数,报到规定的那个数的人就死。对于这类问题,两种解决方案: 1、模拟法,模拟真实情况,循环,每到规定的数,就死人。 2、递推,根据已有的状况来推递推的公式。 第一种是我一开始做的想法,第二种是我时间超限之后网上搜来的。下面给出递推公式: for(原创 2015-04-13 09:26:23 · 453 阅读 · 0 评论 -
第九天:poj1011(又是深度搜索+剪枝,还是不会o(∩_∩)o )
题目意思:给出了N种邮票,每种邮票都有自己的面值(可重复)要满足购买者所需要的值m 1.所用的n种邮票可以重复选 2.张数《=4 3.尽可能使用最大面值的邮票 4.张数尽可能少 5.如果张数相同则面值最大的邮票数量多的优先 6.如果上面都一样,则输出tie题目的个人分析: 一开始做的时候,首先对于题目的要求一定要看清楚,那个是优先的解,然后是怎么做?对于我这种没怎么学过什么高端算法的人原创 2015-04-12 19:21:01 · 500 阅读 · 0 评论 -
第五天:poj1007(题目没读懂,就根本做不来了)
1004:简单的求和之后求平均值,是个人都会的1005:稍微有点讲究,不能算距离去比较,而是要用算完的面积去比较,更精确一些1006:重点是这道题目!! 首先看完这道题目我的第一个想法是模拟,一个个往上加周期,一样的话输出,可是我马上就觉得这样肯定太烦所以想了别的办法。 首先是从21252开始:一看这个数据就非常的奇怪?怎么会是这么一个怪的数据呢?然后23 * 28 * 33 =21252于是让原创 2015-04-06 17:30:00 · 534 阅读 · 0 评论 -
第十七天:poj1019(纯属数学题目,找到规律就能解出)
没找到规律,所以循环列表,时间肯定超。模拟分组,把1看做第1组,12看做第2组,123看做第3组……那么第i组就是存放数字序列为 [1,i]的正整数,但第i组的长度不一定是i下面两个公式也是大牛推出来的。。。数学不好根本想不到。(int)log10((double)i)+1(i-1)/(int)pow((double)10,len-pos)%10这道题目对于我来说意义可能在于,在一些数列上面的规律可原创 2015-04-18 16:26:01 · 380 阅读 · 0 评论 -
第四天:poj1004,1005,1006(题目水所以多刷一点)
1004:简单的求和之后求平均值,是个人都会的1005:稍微有点讲究,不能算距离去比较,而是要用算完的面积去比较,更精确一些1006:重点是这道题目!! 首先看完这道题目我的第一个想法是模拟,一个个往上加周期,一样的话输出,可是我马上就觉得这样肯定太烦所以想了别的办法。 首先是从21252开始:一看这个数据就非常的奇怪?怎么会是这么一个怪的数据呢?然后23 * 28 * 33 =21252于是让原创 2015-04-05 17:12:18 · 502 阅读 · 0 评论 -
第十五天:poj1017(水,贪心直接搞定)
题目大意:有6*6的板子,用户需求是要1-6*1-6的板子,要从大的板子上面切下来,要利用率最大。上来想到的就是贪心。 先直接把6的做掉。 然后5的做掉,留下的边做1的。 然后4的做掉,留下的边先做2在做1。 然后3的做掉,4个3的一组,对剩下的3进行讨论: 同理先做2,在做1. 最后看1和2的总的数量,能有36就总数+1. 最后处理不到36的。只要思路清晰,就能搞定,思路不清楚的情况原创 2015-04-18 10:03:56 · 696 阅读 · 0 评论 -
第十六天:poj1018(如果枚举超时,要考虑考虑剪枝哦)
题目意思是:从不同带宽和价格的线中选,选出min(b1,b2,b3…)/sum(p1+p2+p3)最大的值。首先我一开始的想法就是枚举,把每一个值都算出来,然后球最大的,然后就超时了。1、首先对于这样对应数据的处理,我是喜欢用结构体的。 2、然后呢,对于两种不同的东西求值,最好是先定一个值然后去找最优解,比如先定min(b1,b2,b3…)的值为80,然后对于这个80,去求相应的满足要求的只值,然原创 2015-04-18 15:39:13 · 369 阅读 · 0 评论 -
第八天:poj1010(深度搜索+剪枝,之前完全没有接触过,所以不会,所以多学!!)
题目意思:给出了N种邮票,每种邮票都有自己的面值(可重复)要满足购买者所需要的值m 1.所用的n种邮票可以重复选 2.张数《=4 3.尽可能使用最大面值的邮票 4.张数尽可能少 5.如果张数相同则面值最大的邮票数量多的优先 6.如果上面都一样,则输出tie题目的个人分析: 一开始做的时候,首先对于题目的要求一定要看清楚,那个是优先的解,然后是怎么做?对于我这种没怎么学过什么高端算法的人原创 2015-04-10 09:53:37 · 626 阅读 · 0 评论 -
第三天:poj1003(水。。。。。)
题目不难,很水的。 所以不多说题目本身。 1.先把算好的数据放进数组 2.按要求查找到对映的数据 要注意的地方是:计算的时候可以少用变量的就少用变量,定义的变量越多越乱,完全可以按照数组的前一项算出后一项的。还有就是输出的格式注意一下,查找的时候可以用二分增加效率,但是没必要,因为数量本来就不大。反正就一个字。。。。。。。。水原创 2015-04-04 21:04:55 · 344 阅读 · 0 评论 -
第一天:做了POJ1001(第一次觉得有点烦和难,但要坚持,万事开头难)
第一天:做了POJ1001(第一次觉得有点烦和难,但要坚持,万事开头难)顺便说一下我的解题报告永远不会出现这道题的答案,只会有方法和对这道题的思考。 thinking is better than solving首先这道题的意思很明确,就是要得到大型数据相乘的结果。 1.学习数据结构告诉我们:处理问题的两个步骤,第一保存数据,第二用好的算法去处理数据。 那么问题来了,这道题存放数据的方式是什么原创 2015-04-02 19:56:31 · 1251 阅读 · 0 评论 -
POJ1110和HDU1298
对于HDU1298主要是要掌握字典树的建立和运用,根据不同的实际情况来调整字典树中存放的数据,然后是搜索方式,主要是利用深搜,但是要注意的是,注意字符的频率。 对于POJ1110主要是在题目的理解以及题目观察能力的运用,对于算法上面,只能说,用不同的数据结构去存放你已经完成过的查询,以减少你的查询次数,有些类似于动态规划的一部分。(虽然这道题最终是WR但是,我觉得题目的要求已经达到了,能过所有测原创 2015-12-22 21:35:59 · 434 阅读 · 0 评论