描述 【题解】 设f[i][j]表示前i个数字分成了j最大。 则f[i][j] = max(f[i 1][j]+a[i] (第i个数字第j合在一起),f[k][j 1]+a[i] (第i个数字作为第j的第一个数字,同时在j 1的情况中找到最大的那个)) 这样的时间复杂度是$O(m
转载 2019-10-10 16:36:00
50阅读
2评论
最大m问题:将一个整数序列a1、a2、a3&hellip;&hellip;an分成m,使其总和最大。 (m=1时是最大问题) 存储设计: int数组b[i][j]: 当序列a被分成i个子时, 到第j项截至时的最大。该问题最终的最优解为:max { b(m, j ), (m <= j <= n ) } 递归式:     b(i
原创 2012-07-04 14:13:37
2175阅读
P1121 环状最大段子 题目描述 给出一环状序列,即认为A[1]A[N]是相邻的,选出其中连续不重叠且非空的两使得这两最大。 输入输出格式 输入格式: 输入文件maxsum2.in的第一行是一个正整数N(N\le 2\times 10^{5})(N≤2×10​5​​),表示了序列的
转载 2017-08-25 19:16:00
76阅读
2评论
P1121 环状最大段子传送门思路:dp+dp+dp+维护前后缀最值。当两端非跨环时,直接扫一遍premx[i]+sufmx[i+1],i∈[1,n)pre_{mx}[i]+suf_{mx}[i+1],i\in[1,n)premx​[i]+sufmx​[i+1],i∈[1,n)即可。当两端跨环,即等价于求中间两端非跨环的最小子,直
原创 2022-01-22 11:43:30
26阅读
P1121 环状最大段子传送门思路:dp+dp+dp+维护前后缀最值。当两端非跨环时,直接扫一遍premx[i]+sufmx[i+1],i∈[1,n)pre_{mx}[i]+suf_{mx}[i+1],i\in[1,n)premx​[i]+sufmx​[i+1],i∈[1,n)即可。当两端跨环,即等价于求中间两端非跨环的最小子,直接将a[i]a[i]a[i]取个反,就等价于求最大=sum+mnsum+mnsum+mn。此外此题有点细节需要注意:最小段子不能包含整个区间,也不能将最
原创 2021-08-10 07:20:00
219阅读
题意:给你n个数,选m个子,各个子连续且不相交,长度可以为1,设maxn为各个子区间的,求最大的maxn。分析:设dp[i][j]代表 j个数选取 i 个子 ,maxn最大的值;得状态转移方程dp[i][j]=max(dp[i][j−1],dp[i][j−1]+a[j],dp[i−1][k]+a[j](0<k<j)dp[i][j] = max(...
原创 2022-11-02 15:04:14
78阅读
嘟嘟嘟 一道说难也难说简单也简单的dp题。 我觉得我的(有篇题解)做法就属于特别简单的。 平时遇到环的问题都是断环为链,但这道题给了一种新的思路。 观察一下,最后的答案无非就这两种:xxx--xx xxxx xxx xx 对于第二种,有一个特别好的做法:正着求一遍最大子串,再倒着求一遍,然后枚举断
原创 2021-05-29 19:12:58
156阅读
线性dp
原创 2023-02-16 08:15:06
72阅读
也许更好的阅读体验Description\mathcal{Description}Description给出一环状序列,即认为a1a_1a1​ana_nan​​是相邻的,选出其中连续不重叠且非空的两使得这两最大。Solution\mathcal{Solution}Solution要求两个最大,考虑其与最大的关系 我们先把序列复制一遍,求出长度小于等于nnn的最大 ...
原创 2021-12-27 15:39:08
139阅读
http://www.51nod.com/Challenge/Problem.html#problemId=1052 f[i][j][0/1]表示前i个数,划出了j,第i个数可以不必使用/必须使用的最大值 如果第i个数必须使用,那么它可以加入前一个数所在的那一(此时它的前一个数必须使用),也可以
转载 2021-08-05 10:37:02
50阅读
动态规划 线性DP 脑洞题
转载 2016-11-04 18:09:00
73阅读
2评论
​​https://www.51nod.com/Challenge/Problem.html#!#problemId=1052​​dp[i][j]代表第i个子以a[j]结尾转移方程dp[i][j]=max{dp[i][j-1],dp[i-1][k]}+a[j] (i-1<=k<=j-1)对于从i-1个子转移过来的这一部分 可以搞个前缀 这样时间复杂度为n*m 但空间还是比较紧 发
原创 2022-06-16 06:01:30
60阅读
N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子,并且这M个子最大的。如果M >= N个数中正数的个数,那么输出所有正数的。 例如:-2 11 -4 13 -5 6 -2,分为2,11 -4 13一,6一为26。 收起 N个整数组成
转载 2019-05-22 21:59:00
99阅读
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1052 题意: 思路:设$dp[i][j]$表示前j个数构成i个字段时的最大值,并且必须以j结尾。 那么状态转移方程就是: ①$dp[i][j]=max(dp[i][j],d
转载 2017-10-01 11:16:00
63阅读
2评论
DescriptionN个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交
原创 2022-12-26 18:35:07
67阅读
所有正数的。例如:-2
原创 2023-06-12 17:34:24
26阅读
P1121 环状最大段子 题目描述 给出一环状序列,即认为$A_1$$A_N$是相邻的,选出其中连续不重叠且非空的两使得这两最大。 输入输出格式 输入格式: 第一行是一个正整数$N(N≤2×10^5)$ ,表示了序列的长度。 第二行包含$N$个绝对值不大于10000的整数$A_i$,
转载 2018-06-06 08:48:00
56阅读
2评论
题目: Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 27299 Accepted Submission(s
转载 2017-02-18 11:43:00
84阅读
2评论
https://www.luogu.com.cn/problem/P1115 贪心 #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int inf=0x3f3f3f3f; cons ...
转载 2021-07-20 17:50:00
84阅读
2评论
给定一个数组,求最大的一段子:如: num = {-5,12,3,-8,2,-9} 最大的子为9 int sum = 0; for (int i = 0; i < N; i++) { if (sum + num[i] < 0) { sum = 0;//若sum小于0 那么之前的一就不要了 ...
原创 2021-08-27 14:29:34
81阅读
  • 1
  • 2
  • 3
  • 4
  • 5