上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 我们观察到m非常小。 考虑只有一行的情况,dp[i][o]表示[1,i]这一段中取出o个矩形,的最大价值。我们预处理出w[i][j]表示[i,j]这一段的最大子矩阵 。那么转移非常显然。 dp[i][o] = max(dp[j - 1][o] + w[j][i]) 我们接着考虑两行的情况,我们类比一 阅读全文
posted @ 2019-04-05 20:12 IAT14 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 做起来不太难,但是很难想的一道题。 分两个步骤,第一个步骤是先求出,最后一个数字是多少。 我们考虑d[i]表示,[1,i]最后一个数字最小情况下,最后一个数字的开始位置。 那转移方程很显然,d[i] = j(满足s[d[j - 1],j - 1]<s[j,i],且j距离i最近,这样子最小)。 这样我 阅读全文
posted @ 2019-04-05 17:45 IAT14 阅读(171) 评论(0) 推荐(0) 编辑
摘要: dp[i][k]表示,在i及i左侧,分成k块,的最大单词数目。 w[i][j]表示,在[i,j],内部多少个单词在此区间开始和结束。 转移方程为dp[i][k] = max(dp[j][k - 1] + w[j + 1][i]) 通过考虑每个单词的结束而非开始,而避开后后效性问题。 如果某个单词是另 阅读全文
posted @ 2019-04-05 10:53 IAT14 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 我们考虑如果我们能快速的得出一条路线上的字符串组成的字典树,那么问题就迎刃而解了。开太多的字典树,开不下,我们可持久化以下就好了。 持久化出根到每个结点的字典树,然后ans(a) + ans(b) - 2 * ans(lca)即可。 可持久化字典树应该如何操作呢,我们考虑,对于一个字典树x,我们向其 阅读全文
posted @ 2019-03-22 00:00 IAT14 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 特别水一道题,还写错了。每行维护一个前缀和,枚举矩形的左上角,扫矩阵第一行的长度,然后看这个长度能向下维持几行。但是忘记考虑要向上也扫一下能维持几行,再求一个和的。因为可能1的长度是逐行递减的,下面的矩形可以向上延申。 阅读全文
posted @ 2019-03-20 22:11 IAT14 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 这题的题意看了20min才看懂,一直以为那个5*5的表格是上面两个序列匹配的结果推出来的,然后下面的结果是那个5*5的表格推出来的............ 题目还是很简单的,有些类似LCS。dp[i][j]表示第一个序列匹配到i,第二个序列匹配到j,产生的最大相似度。然后转移的时候考虑,有三个情况, 阅读全文
posted @ 2019-03-20 18:52 IAT14 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 我们发现,我们从前往后DP有苦难,因为现在的选择存在后效性。 如果我们从后向前DP,f[i]表示从i时刻到下班的最小工作时间,从后向前转移,则不存在后效性问题。 阅读全文
posted @ 2019-03-20 17:00 IAT14 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 这么水的题不想水博客来着,但是感觉这种把原序列倍增后,进行区间DP的思路很奇妙,记录一下。 因为是一个环,所以对原序列倍增后,再进行DP,最后枚举起始位置。 dp[i][j]表示[i,j]这一段合并产生的最大/最小价值。 阅读全文
posted @ 2019-03-20 16:52 IAT14 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 计算一下,对于主人经过一段路线,宠物来得及跑到哪些景点再跑回来。然后对于主人的一段路程看作一个点,与来得及的景点连边。跑一下匈牙利算法就可以了。 阅读全文
posted @ 2019-03-18 20:15 IAT14 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 可能是我有点菜,网上的题解都看不懂......但是写完之后看了好多题解代码,很多都有不影响正确性的思维上的小错误... 回顾下点分治的基理,就是选定重心,把重心的答案和一些点对经过重心路径产生的答案全部都处理出来,从而使得所有子树再也没有任何关系,从而独立而分治。 基本上O(nlogn),树上点对问 阅读全文
posted @ 2019-03-18 17:44 IAT14 阅读(176) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页