随笔分类 -  DP-线性DP

 
POJ-1050 To the Max(最大子矩阵和)
摘要:题意:一个矩阵的大小为$N * N$。求这个矩阵中的最大子矩阵和,(N ⇐ 100)。 分析:先考虑一维的状况,即$dp[i] = dp[i - 1] < 0 ? val[i] : dp[i - 1] + val[i]$,我们可以把从第i行到第j行的每列数加起来,然后变成一维数组,存储在f[]数组中 阅读全文
posted @ 2020-07-21 16:12 TT3E 阅读(92) 评论(0) 推荐(0)
CodeForces 446A. DZY Loves Sequences(最长上升子序列)
摘要:题意:给定一个长度为n的序列,可以修改任何一个字符,求修改后最长的单调严格上升子序列(必须是连续的)。 分析:\((1 <= n < 10^5)\),数据范围很大,不能使用$o(n^2)$的算法。所以我们可以从线性角度考虑,一种常见的套路是枚举修改点,然后求最大值。我们只需要分别求出两端的情况即可, 阅读全文
posted @ 2020-07-15 18:09 TT3E 阅读(168) 评论(0) 推荐(0)
CodeForces 1373D. Maximum Sum on Even Positions(最大连续子段和)
摘要:题目:你被给予了一个n个整数的数组a。数组的下标从0开始。你可以逆置一个数组的子数组(连续的)最多一次,你的任务是使得这个数组的偶数位置的数字的和最大。 分析:奇数长度的子数组翻转并不会改变偶数位置的数字,因此,我们只需要考虑长度为偶数的子区间。偶数长度的子数组我们有两种情况,一种是偶数位置开始,奇 阅读全文
posted @ 2020-07-03 12:45 TT3E 阅读(237) 评论(0) 推荐(0)
E. K-periodic Garland
摘要:题意:你被给予了一个n个灯的花圈,灯的状态由长度为n的字符串组成,字符串s的第i个字母为'0',表示这个灯关闭,为'1',表示这个灯开着。你被给予了一个正整数k。 每一个操作,你可以选择一个灯泡,并且改变它的状态。 一个周期为k的花圈如果是合法的,意味着每一对相邻的开着的灯泡的距离为k,考虑k = 阅读全文
posted @ 2020-05-15 13:41 TT3E 阅读(237) 评论(0) 推荐(0)
CodeForces1256 E. Yet Another Division Into Teams
摘要:题意:这里有n个同学在你的大学,第i个同学的编程技巧是ai,作为一个教练,你想把它们分成很多组。每组至少3个人。 求每组差异的值的总和。如何分组,才能使得差异值的总和最小。 分析:先排序,肯定是连续数字的组中最大值和最小值差值最小。然后考虑分组的人数的上限,我们最多一组5个人, 因为假设有6个人,差 阅读全文
posted @ 2020-05-04 21:03 TT3E 阅读(119) 评论(0) 推荐(0)
CodeForces1216F-Wi-Fi (DP+线段树优化)
摘要:题意:给定n和k,n表示n个房间,k表示wifi的传播范围,同时给定一个字符串,表示可以放置路由器的房间,如果可以放置路由器,那么max(1, n k) 和min(n, n + k)范围里的房间都可以得到信号,从而可以不直接联网,每个房间联网的代价为它的下标i。 分析: 我们假设f[i][0 / 1 阅读全文
posted @ 2020-04-30 17:47 TT3E 阅读(176) 评论(0) 推荐(0)
CodeForces 1240B.Sequence Sorting
摘要:题意:给定一个整数序列a1, a2, ..., an 你可以采用如下的操作:选择一个整数x, 移动这些整数x, 放置在序列的前端和后端。可以进行多次操作,求把该序列变成非降序列的最少操作次数。 分析:通常这种题目,一般求这个序列中的最长上升子序列,然后整个序列的长度减去这个最长上升子序列,就是答案, 阅读全文
posted @ 2020-04-15 22:00 TT3E 阅读(124) 评论(0) 推荐(0)