- 博客(27)
- 收藏
- 关注
原创 Python数据结构与算法(poj):P01089——Intervals
一个挺正常的区间覆盖问题,可是我做了好一会儿……其实就是先排序,再进行处理,每次进行贪心的判断即可。
2024-03-31 15:17:15
167
原创 Python数据结构与算法(poj):P01088——滑雪
我们建立一个memo数组,表示在相应点对应的最长滑雪长度,那么之后再访问这个节点,就可以直接返回这个数组存储的值,这可以大大提高搜索的效率。就这道题而言,不加如下语句的时间为:9964ms,加上后为:43ms。太经典的一道题了,体现了记忆化搜索的优势所在。这就已经很显然地说明了记忆化搜索的高效性。
2024-03-31 13:39:44
220
原创 Python数据结构与算法(poj):P01084——正方形破坏者
倘若讨论每根火柴是否已被拿走,没被拿走就拿走,同时对当前状态的正方形个数进行计数,与之前的进行比较从而达到剪枝的目的,这样做,哪怕后面使用位运算存储累计拿走火柴棒的状态,仍然会超时(也有可能超内存)。使用该算法时,我们首先定义一个估价函数,用于进行判断当前状态还需要的最少火柴棒数目(准确地说,可能会比实际达到的数目还要少,但剪枝的效率极高)。于是,我们改变思路,我们还是需要看火柴是否被拿走,但我们从正方形的角度进行考虑,这样计数时的复杂度就会由。注意到,尽管我们会将此时拿走火柴棒的次数与全局变量。
2024-03-31 11:03:00
792
原创 Python数据结构与算法(poj):P01080——Human Gene Functions
这道题上来一看,给你两个字符串,可以往里面随便(有一定的要求)加“-”,从而是匹配值最大,那显然就使用动态规划。同时注意一下初始化就可以愉快地写出代码啦~
2024-03-28 22:48:48
161
原创 Python数据结构与算法(poj):P01077——Eight
其实挺简单的,使用bfs,同时注意判重就可以。我多开一个字典,结果就MLE了。主要的思路就是从最开始的12345678x得到所有的符合要求情况,然后判断即可。
2024-03-28 22:13:51
330
原创 Python数据结构与算法(poj):P01065——Wooden Sticks
的最长递减序列,据说用Dilworth's theorem不难证明(可是我不会……事实上,求最长递减序列也是有讲究的,如果使用单调栈,会快很多。这道题其实就是要求对。
2024-03-27 23:00:30
146
原创 Python数据结构与算法(poj):P01064——网线主管
这道题是经典的贪心+二分,我们通过二分法不断尝试可行的长度,从而确认最长的长度是多少。思路挺简单的,直接上代码叭~
2024-03-27 22:32:05
122
原创 Python数据结构与算法(poj):P01062——昂贵的聘礼
需要注意题目中 “但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样” 的意思,所以我们需要设置一个最高等级和一个最低等级进行判断。这道题主要考察图方面的知识,要求求出最短路,那么我们dfs就可以了。
2024-03-27 22:20:59
237
原创 Python数据结构与算法(poj):P01061——青蛙的约会
题目不长,但一看到“跳了几次才能会面,如果不能,就输出‘Impossible’”,就知道这就是一个数论的题目。本来想着暴力求解,结果TLE。于是就去了解怎么解同余方程组,也就知道了什么是扩展欧几里得算法,那么就很好写了(不清楚的uu可以看这个——一道只有中国人才出的出来的八股文题目……看看代码~(真的希望不要再看到这种恶心题了)
2024-03-27 20:29:38
241
原创 Python数据结构与算法(poj):P01056——IMMEDIATE DECODABILITY
这道题主要考察对于字符串的应用,尽管其内涵是前缀树的唯一性(Huffman树),但题目是很简单的。
2024-03-27 18:58:40
193
原创 Python数据结构与算法(poj):P1042——Gone Fishing
唉,又臭又长的英文……大概意思就是说,有一条单向道路,一个人沿着这条路到达各个湖泊(只能前进,不能后退),每到一个湖泊都可以选择钓鱼或者不钓(若时间到了,则直接离开),钓鱼也可以选择在那里的时长,在某个湖泊钓到鱼,之后在同一个湖泊的钓鱼数量会减少,直至为0。已知道路之间的时长,在相同时间内初始时刻各个湖泊能钓到的鱼的数量,每钓一次鱼减少的相应数量,以及这个人有多少时间。个湖泊,并求出能钓到的鱼的最大数量,这个步骤用优先队列解决。我们规定在相应时间内,这个人只能走前。
2024-03-25 22:26:48
252
1
原创 Python数据结构与算法(poj):P01037——A decorative fence
题目是英文,先说说大致意思:有一些栅栏,由高度各不相同的木棍组成(1~n的一个全排列),但要求满足条件,某一个木棍必须比其相邻的木棍都要矮或者都要高,换句话说就是要求栅栏必须是波浪形的。然后给出栅栏的木棍个数和根据字典序得到的排位,要求你输出相应栅栏的高度序列。因此我们应当先求出一些数组,从而可以方便地在求序列的时候使用(类似普通排序的排名的时候用到n!接下来的处理就方便很多了,其实和求普通排序的排名是差不多的思路,都是进行尝试,然后看是否在对应范围内(我描述的不太清楚,直接上代码吧~)
2024-03-22 18:05:18
377
1
原创 Python数据结构与算法(poj):P01035——拼写检查
本来想直接打出字典中每个单词对应的变换后的词,存到集合里面,这样判断会快很多,结果MLE。(其实后面用sys改了一下,降低了内存,但是还是会远远TLE,说明这种方法是不可取的)于是对于每个输入的单词进行判断,这样的优势是(在很多情况下)进行了剪枝,从而可以大大降低时间复杂度。这道题主要考察对于输入单词的判断和处理,时间卡的相对较紧。
2024-03-21 20:23:04
196
1
原创 Python数据结构与算法(poj):P01019——Number Sequence
我们来算一下从1~k的对应长度,显然可以很容易地通过取对数再由等比数列求和并加上剩余项得到,用代码写就是这样:(其中l为总长度,所以这里写的是加上对应增量)如果想直接得出整个序列,那么看一下数据范围就知道不可能,一定会超时,所以我们应采取一些数学的东西来简化,尽可能得到线性的算法。由此得到输入索引对应1~k序列的k是多少,之后就可以打出一个数字序列(1~k),再按照输入的索引就可以输出答案。大意为,根据题目要求构造一个序列,并输出特定位置的数字。
2024-03-21 19:46:21
109
1
原创 Python数据结构与算法(poj):P01017——装箱问题
这道题需要你根据给定的不同物体的分布数量得出为全部装下它们的箱子个数,贪心策略很好构建,首先显然4*4、5*5、6*6只能占据一个箱子,然后3*3不能放在之前的箱子里面(必须拿新的箱子装),最后2*2和1*1按照要求往里面塞就可以了。
2024-03-21 16:07:23
197
1
原创 Python数据结构与算法(poj):P01011——Sticks
对于一个给定长度进行判断的方法是不难想的,从最长的木棍长度开始(相当于对木棍长度构成的数组进行了排序,从大到小),分别进行尝试,每拼到给定长度,就进行新的一次尝试(同时将之前尝试且能够拼到给定长度的木棍进行标记,之后不再使用),如果最后既不需要木棍去拼(刚好某一次尝试结束),也没有剩下的木棍,那么就说明这一给定长度是满足条件的。2、如果我们进行尝试的时候,所使用的这根木棍长度恰好与给定长度相等,亦或此时的恰好开始一次新的尝试,得到的结果是False,那么就说明这个给定长度不满足条件。因此,我们需要剪枝。
2024-03-21 15:44:56
284
1
原创 Python数据结构与算法(poj):P01008——Maya Calendar
我们首先根据题意算出对应的天数,然后换至另一个日历,这里需要注意日期(因为是通过取模得到的)可能为0,这时需要改为13,如果这时星期对应的还恰好是第一个星期,那么说明应该倒退一年,也就是年份数减一。同时别忘了,需要在最开始处输出日期的数量。这道题主要考察不同日历之间的变换,并进行符合要求的输出。
2024-03-21 14:58:28
133
1
原创 Python数据结构与算法(poj):P01007——DNA排序
还是挺简单的,以下为代码~(最开始没看数据范围导致写了归并……不过还是放在下面叭)。这道题主要考察冒泡排序求逆序对,求出逆序对后再进行正常排序处理输出就可以了。关于使用归并这件事!(以后真得好好看看数据范围了。
2024-03-20 23:11:57
185
原创 Python数据结构与算法(poj):P01006——Biorhythms
首先找到一个数的最小公倍数,然后对另一个数计算倍数的时候,每次加上那个数,求第三个数的公倍数的时候,就加上前两个数的乘积,就可以满足条件了。这道题主要考察最小公倍数的求法。可能说着不太清楚,直接上代码叭~
2024-03-20 20:45:12
120
1
原创 Python数据结构与算法(poj):P01005——I Think I Need a Houseboat
【代码】Python数据结构与算法(Poj):P01005——I Think I Need a Houseboat。
2024-03-20 20:23:48
225
1
原创 Python数据结构与算法(poj):P01003——Hangover
这道题主要考察二分查找,由于使用python语言,我们可以使用。,之后使用bisect_left进行查找就可以了。
2024-03-20 20:00:02
193
原创 Python数据结构与算法(poj):P01002——方便记忆的电话号码
这道题要求的是对于进行变化的电话号码统一处理为同样的格式,并找到重复出现的号码,按照字典序进行输出。
2024-03-20 19:19:04
216
原创 Python数据结构与算法(poj):P01001——Exponentiation
这里的MAX_PREC相当于直接使用了最高的精度,之后处理的时候就无需担心精度的问题了。这道题主要考察高精度计算,由于使用python,这里使用。这是我的第一篇博客,欢迎大家批评指正!
2024-03-20 18:45:52
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人