10 2015 档案

摘要:有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] =b[1] >=…>=b[x] b[x],所以前者更大,所以-a[x + 1] + b[x + 1] – a[x]不会产生负数。因此我们证明了交换之后仍然不产生负数,也就是原先... 阅读全文
posted @ 2015-10-28 09:47 Mose 阅读(600) 评论(0) 推荐(0)
摘要:n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人。显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟?分析:一个显然的策略是按照人的体重排序。极端化贪心策略,最重的人要上船——如果最重的人和最轻的人体重总和不超过船的承重,则他... 阅读全文
posted @ 2015-10-28 08:44 Mose 阅读(1058) 评论(0) 推荐(0)
摘要:有若干个活动,第i个开始时间和结束时间是[Si,fi),活动之间不能交叠,要把活动都安排完,至少需要几个教室?分析:能否按照之一问题的解法,每个教室安排尽可能多的活动,即按结束时间排序,再贪心选择不冲突的活动,安排一个教室之后,剩余的活动再分配一个教室,继续贪心选择……反例: A:[1,2) B:[... 阅读全文
posted @ 2015-10-28 08:02 Mose 阅读(540) 评论(0) 推荐(0)
摘要:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:熊大大链接:http://www.zhihu.com/question/23995189/answer/35324479来源:知乎动态规划中递推式的求解方法不是动态规划的本质。我曾经作为省队成员参加过NOI,保送之后也给学校参... 阅读全文
posted @ 2015-10-23 13:18 Mose 阅读(260) 评论(0) 推荐(0)
摘要:有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动?分析: 我们就是想提高教室地利用率,尽可能多地安排活动。考虑容易想到的几种贪心策略:(1) 开始最早的活动优先,目标是想尽早结束活动,让出教室。然而, 这个显然不行,因为最早的活动可能很长,... 阅读全文
posted @ 2015-10-23 12:38 Mose 阅读(564) 评论(0) 推荐(0)
摘要:约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字... 阅读全文
posted @ 2015-10-23 12:34 Mose 阅读(303) 评论(0) 推荐(0)
摘要:计数排序时我们使用一个数组来记录出现的数字的次数,而当数据范围太大时,无法建立一个那么大地数组(而且可能空间利用率很低,太浪费),此时可以改用hash table 、 binary search tree等数据结构作为lookup table#include#include#include usin... 阅读全文
posted @ 2015-10-23 12:04 Mose 阅读(226) 评论(0) 推荐(0)
摘要:I假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。II假设有一个数组,它的第i个元素是一个给定的股票在第i天的价格。设计一个算法来找到最大的利润。你可以完成尽可能多的交易(多次买卖股票)。然而,你不能同时参... 阅读全文
posted @ 2015-10-22 08:38 Mose 阅读(985) 评论(0) 推荐(0)
摘要:範例:人潮最多的時段( Interval Partitioning Problem )一群訪客參加宴會,我們詢問到每一位訪客的進場時刻與出場時刻,請問宴會現場擠進最多人的時段。換個角度想,想像會場門口裝著一支監視器。有訪客進入,會場就多一人;有訪客離開,會場就少一人。如此就很容易統計會場人數。遞增的... 阅读全文
posted @ 2015-10-21 19:19 Mose 阅读(625) 评论(0) 推荐(0)
摘要:一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,先从左上走到右下,再从右下走到左上。第1遍时只能向下和向右走,第2遍时只能向上和向左走。两次如果经过同一个格子,则该格子的奖励只计算一次,求能够获得的最大价值。例如:3 * 3的方格。1 3 32 1 32 2 1能够获得的最大价... 阅读全文
posted @ 2015-10-12 11:37 Mose 阅读(814) 评论(0) 推荐(0)
摘要:分析:这个和我们之前讲的0-1背包问题很像。思路1:我们显然可以把每种物品的每一件都作为一个新的物品按照普通0-1背包的方法做。但是0-1背包的时间复杂度是O(W * N) , 这里N = C1 + C2 + …+ Cn。思路2:换个角度我们用dp[i][j]表示前i件物品,总重量为j的时候的最大价... 阅读全文
posted @ 2015-10-12 10:45 Mose 阅读(264) 评论(0) 推荐(0)
摘要:分析:(1)笨方法,我们可以用普通最大子段和的方法解决这个问题。我们从每个位置“断开”环,然后按普通的最大子段和的方法去做。这样做的复杂度是O(n^2)。(2)巧妙点的方法,我们之所以要从某个位置切开是因为循环的最大子段和可能是跨越一部分头和尾。如上图,最优解可能是0..i, j + 1.. n –... 阅读全文
posted @ 2015-10-12 10:17 Mose 阅读(295) 评论(0) 推荐(0)
摘要:令h(0)=1,h(1)=1,卡塔兰数数满足递归式:h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2),这是n阶递推关系;还可以化简为1阶递推关系: 如h(n)=(4n-2)/(n+1)*h(n-1)(n>1) h(0)=1该递推关... 阅读全文
posted @ 2015-10-10 09:35 Mose 阅读(297) 评论(0) 推荐(0)