分段dp样例不过,10pts求助dalao
  • 板块P1281 书的复制
  • 楼主SZnP
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/8 10:13
  • 上次更新2023/10/27 21:31:27
查看原帖
分段dp样例不过,10pts求助dalao
516867
SZnP楼主2022/7/8 10:13
#include <bits/stdc++.h>
using namespace std;
char a[100005];
long long n,l,dp[10005][10005],b[100005];
int num(int l,int r)
{
	int ans=0;
	for(int i=l;i<=r;i++)
	{
		ans+=b[i];
	}
	return ans;
}

int main()
{
	cin>>n>>l;
//	l++;
	for(int i=1;i<=n;i++)
	{
		cin>>b[i];
	}
	for(int i=1;i<=n;i++)
	{
		dp[i][1]=num(1,i); 
	}
	for(int i=1;i<=n;i++)
		for(int k=1;k<=l;k++)
			for(int j=k-1;j<=i;j++)
				dp[i][k]=max(dp[i][k],dp[j][k-1]*num(j+1,i));
	cout<<"1 "<<dp[n][1]<<endl;
	for(int i=2;i<n;i++)
	cout<<dp[n][i-1]+1<<" "<<dp[n][i]<<endl;
 } 

部分代码参照“乘积最大

2022/7/8 10:13
加载中...